Déplacer le curseur en mode graphique
Déplacer le curseur en mode graphique
Bonjour à tous,
J'aimerais faire une application en mode graphique genre : OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0)) et j'aimerais savoir s'il est possible de placer le curseur à une coordonnée X, Y donnée de façon à placer un texte juste en faisant par exemple SetCurseur(X,Y) : DrawText(X, Y, Texte$), vous me demanderez pourquoi placer le curseur d'abord, alors qu'avec DrawText(), on peut indiquer ces valeurs ? C'est parce que je veux créer des procédures pour que le curseur se place à la fin d'une phrase ou passe à la ligne suivante comme le fait Print() et PrintN() en mode console pour pour avoir en quelque sorte une console en plein écran avec une police de caractères choisie.
Je ne demande à personne de me fournir un code prêt à l'emploi, mais seulement si c'est possible et même occasionnellement la façon de m'y prendre.
Je vous remercie tous énormément.
			
			
									
									J'aimerais faire une application en mode graphique genre : OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0)) et j'aimerais savoir s'il est possible de placer le curseur à une coordonnée X, Y donnée de façon à placer un texte juste en faisant par exemple SetCurseur(X,Y) : DrawText(X, Y, Texte$), vous me demanderez pourquoi placer le curseur d'abord, alors qu'avec DrawText(), on peut indiquer ces valeurs ? C'est parce que je veux créer des procédures pour que le curseur se place à la fin d'une phrase ou passe à la ligne suivante comme le fait Print() et PrintN() en mode console pour pour avoir en quelque sorte une console en plein écran avec une police de caractères choisie.
Je ne demande à personne de me fournir un code prêt à l'emploi, mais seulement si c'est possible et même occasionnellement la façon de m'y prendre.
Je vous remercie tous énormément.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz  PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
						Un homme doit être poli, mais il doit aussi être libre !
Re: Déplacer le curseur en mode graphique
Tu confond le curseur de la souris avec le carret. Un genre de curseur de texte.
Ce que tu décris est bien possible, mais tu dois réaliser toi-même tout le système d'écriture, retour à la ligne, mise en forme (si tu veux vraiment le faire sous forme graphique.
j'ai programmé un texteditorgadget() graphique qui fait ce que tu dis, mais c'est ultra complexe, long et pas du tout nécessaire !
			
			
									
									Ce que tu décris est bien possible, mais tu dois réaliser toi-même tout le système d'écriture, retour à la ligne, mise en forme (si tu veux vraiment le faire sous forme graphique.
j'ai programmé un texteditorgadget() graphique qui fait ce que tu dis, mais c'est ultra complexe, long et pas du tout nécessaire !
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
)
						Mon site : CeriseCode (Attention Chantier perpétuel
 )
)Re: Déplacer le curseur en mode graphique
Bonjour graph100 et merci beaucoup pour ta réponse, déjà, savoir qu'on peut le faire me permet de me lancer dans l'entreprise de trouver une méthode, oui effectivement, j'ai utilisé le terme générique curseur pour dire emplacement du prochain caractère, mais maintenant, je sais qu'on dit caret, ce qui va me permettre d'approfondir ma recherche !
Merci encore et bonne journée à tous.
			
			
									
									Merci encore et bonne journée à tous.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz  PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
						Un homme doit être poli, mais il doit aussi être libre !
Re: Déplacer le curseur en mode graphique
pour info 
le mot "curseur" est valable pour indiquer le petit repere clignotant dans un editeur
d'ailleurs , il l'a toujours été ....
http://fr.wikipedia.org/wiki/Curseur_%28interface%29
par contre , ne pas confondre "Curseur"... avec "pointeur" pour la souris ...
meme si les 2 termes sont aussi employés ....
le mot "Caret" .. est beaucoup plus recent .... surement tiré de l'anglais ... et beaucoup moins employé ....
il n'y a qu'a faire une recherche google entre "Caret"(un seul R ) , et "Curseur" ...
pour voir qu'en france , l'utilisation plus courrante est : "Curseur" ...
toutefois , il est bien de connaitre le terme "Caret" , car la librairie Scintilla , utilise ce terme
pour les fonctions concernant le "Cursor" ...
ex :
SCI_GETCARETSTYLE
le tout c'est de le savoir ...
			
			
									
									
						le mot "curseur" est valable pour indiquer le petit repere clignotant dans un editeur
d'ailleurs , il l'a toujours été ....
http://fr.wikipedia.org/wiki/Curseur_%28interface%29
par contre , ne pas confondre "Curseur"... avec "pointeur" pour la souris ...
meme si les 2 termes sont aussi employés ....
le mot "Caret" .. est beaucoup plus recent .... surement tiré de l'anglais ... et beaucoup moins employé ....
il n'y a qu'a faire une recherche google entre "Caret"(un seul R ) , et "Curseur" ...
pour voir qu'en france , l'utilisation plus courrante est : "Curseur" ...

toutefois , il est bien de connaitre le terme "Caret" , car la librairie Scintilla , utilise ce terme
pour les fonctions concernant le "Cursor" ...
ex :
SCI_GETCARETSTYLE
le tout c'est de le savoir ...
Re: Déplacer le curseur en mode graphique
Bonjour Dobro et merci beaucoup pour tous ces renseignements, Je savais déjà que mon AVC m'avait effacer pas mal de souvenirs de mon passé, mais caret, ça ne me disait absolument rien et comme les vieux ça a des habitudes, j'étais rester sur curseur qui pour moi veut dire plein de choses concernant la position des caractères ou du pointeur de la souris, mais grâce à ce nouveau mot que j'ai appris aujourd'hui, j'ai réussi à faire ma petite routine :
entre autres et ça me convient très bien !
			
			
									
									Code : Tout sélectionner
Procedure GConsoleLocate(x, y)
  XX = X : YY = Y
  SetCaretPos_(XX, YY)
EndProcedureMicrosoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz  PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
						Un homme doit être poli, mais il doit aussi être libre !
Re: Déplacer le curseur en mode graphique
Oui mais ça ne correspond vraiment pas à ton premier post, dans lequel tu ne mentionnent pas que tu veux utiliser une console, mais un écran graphique
			
			
									
									_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
)
						Mon site : CeriseCode (Attention Chantier perpétuel
 )
)Re: Déplacer le curseur en mode graphique
Bonjour graph100,
C'est exactement ce que je fais, j'ouvre une fenêtre graphique dans une fenêtre normale, pour t'en persuader je te poste mon code
Evidemment, c'est encore en chantier, car j'avance très lentement !
			
			
									
									C'est exactement ce que je fais, j'ouvre une fenêtre graphique dans une fenêtre normale, pour t'en persuader je te poste mon code
Code : Tout sélectionner
;CouleurConsole.pbi
Structure Couleur
  CouleurTexte.i
  CouleurFond.i
EndStructure
Global.Couleur CouleurConsole
Global.i Dim Couleur(15,1)
Procedure Init()
  Couleur(0,0) = 0        : Couleur(0,1) = 0
  Couleur(1,0) = $800000  : Couleur(1,1) = 1
  Couleur(2,0) = $008000  : Couleur(2,1) = 2
  Couleur(3,0) = $808000  : Couleur(3,1) = 3
  Couleur(4,0) = $0000FF  : Couleur(4,1) = 4
  Couleur(5,0) = $800080  : Couleur(5,1) = 5
  Couleur(6,0) = $000080  : Couleur(6,1) = 6
  Couleur(7,0) = $F0F0F0  : Couleur(7,1) = 7
  Couleur(8,0) = $808080  : Couleur(8,1) = 8
  Couleur(9,0) = $FF8080  : Couleur(9,1) = 9
  Couleur(10,0) = $80FF80 : Couleur(10,1) = 10
  Couleur(11,0) = $FFFF80 : Couleur(11,1) = 11
  Couleur(12,0) = $8080FF : Couleur(12,1) = 12
  Couleur(13,0) = $FF80FF : Couleur(13,1) = 13
  Couleur(14,0) = $80FFFF : Couleur(14,1) = 14
  Couleur(15,0) = $FFFFFF : Couleur(15,1) = 15
EndProcedure
Init()
Procedure DefinirCouleurFond(CoulFond)
  If CoulFond >= 0 And CoulFond <= 15
    Select CoulFond
      Case 0
        CouleurConsole\CouleurFond = Couleur(0,1)
      Case 1
        CouleurConsole\CouleurFond = Couleur(1,1)
      Case 2
        CouleurConsole\CouleurFond = Couleur(2,1)
      Case 3
        CouleurConsole\CouleurFond = Couleur(3,1)
      Case 4
        CouleurConsole\CouleurFond = Couleur(4,1)
      Case 5
        CouleurConsole\CouleurFond = Couleur(5,1)
      Case 6
        CouleurConsole\CouleurFond = Couleur(6,1)
      Case 7
        CouleurConsole\CouleurFond = Couleur(7,1)
      Case 8
        CouleurConsole\CouleurFond = Couleur(8,1)
      Case 9
        CouleurConsole\CouleurFond = Couleur(9,1)
      Case 10
        CouleurConsole\CouleurFond = Couleur(10,1)
      Case 11
        CouleurConsole\CouleurFond = Couleur(11,1)
      Case 12
        CouleurConsole\CouleurFond = Couleur(12,1)
      Case 13
        CouleurConsole\CouleurFond = Couleur(13,1)
      Case 14
        CouleurConsole\CouleurFond = Couleur(14,1)
      Case 15
        CouleurConsole\CouleurFond = Couleur(15,1)
    EndSelect
    ;Debug CouleurConsole\CouleurFond  
    ProcedureReturn CouleurConsole\CouleurFond
  Else
    MessageRequester("ATTENTION !", "La couleur de fond doit être entre 0 et 15", #MB_ICONEXCLAMATION)
  EndIf  
EndProcedure
Procedure DefinirCouleurTexte(CoulTexte)
  If CoulTexte >= 0 And CoulTexte <= 15
    Select CoulTexte
      Case 0
        CouleurConsole\CouleurTexte = Couleur(0,1)
      Case 1
        CouleurConsole\CouleurTexte = Couleur(1,1)
      Case 2
        CouleurConsole\CouleurTexte = Couleur(2,1)
      Case 3
        CouleurConsole\CouleurTexte = Couleur(3,1)
      Case 4
        CouleurConsole\CouleurTexte = Couleur(4,1)
      Case 5
        CouleurConsole\CouleurTexte = Couleur(5,1)
      Case 6
        CouleurConsole\CouleurTexte = Couleur(6,1)
      Case 7
        CouleurConsole\CouleurTexte = Couleur(7,1)
      Case 8
        CouleurConsole\CouleurTexte = Couleur(8,1)
      Case 9
        CouleurConsole\CouleurTexte = Couleur(9,1)
      Case 10
        CouleurConsole\CouleurTexte = Couleur(10,1)
      Case 11
        CouleurConsole\CouleurTexte = Couleur(11,1)
      Case 12
        CouleurConsole\CouleurTexte = Couleur(12,1)
      Case 13
        CouleurConsole\CouleurTexte = Couleur(13,1)
      Case 14
        CouleurConsole\CouleurTexte = Couleur(14,1)
      Case 15
        CouleurConsole\CouleurTexte = Couleur(15,1)
    EndSelect  
    
    ;Debug CouleurConsole\CouleurTexte
    ProcedureReturn CouleurConsole\CouleurTexte
  Else
    MessageRequester("ATTENTION !", "La couleur du texte doit être entre 0 et 15", #MB_ICONEXCLAMATION)
  EndIf
EndProcedure
Procedure ObtenirCouleurConsole()
  MessageRequester("Couleurs de la console","Couleur du texte " + CouleurConsole\CouleurTexte + #LF$ + 
                                            "Couleur du fond " + CouleurConsole\CouleurFond, #MB_ICONINFORMATION)
EndProcedure
;***TEST***
CompilerIf #PB_Compiler_IsMainFile
  
  OpenWindow(0,0,0,800,600,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  InitSprite()
  OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0))
  
  StartDrawing(WindowOutput(0))
  DefinirCouleurFond(1)
  DefinirCouleurTexte(15) 
  BackColor(CouleurConsole\CouleurFond)
  FrontColor(CouleurConsole\CouleurTexte)
  StopDrawing()
  
  ObtenirCouleurConsole()
  
  StartDrawing(WindowOutput(0))
  DrawText(10, 10, "Ceci est un texte de test")
  StopDrawing()
  
  Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
  
CompilerEndIf  Code : Tout sélectionner
;FonctionsConsole.pbi
XIncludeFile "CouleurConsole.pbi"
Global X, Y, XX, YY
Declare GClearConsole()
Declare GCloseConsole()
Declare GConsoleColor(CouleurTexte, CouleurFond)
Declare GConsoleLocate(x, y)
Declare GConsoleTitle(Titre$)
Declare.s GInkey() ; sort le dernier caractère frappé
Declare.s GInput() ; sort une chaîne de caractères
Declare GOpenConsole(X.i, Y.i, Largeur.i, Hauteur.i, Titre.s)
Declare GPrint(Texte$)
Declare GPrintN(Texte$)
Procedure GClearConsole()
  ClearScreen(Couleur(CouleurConsole\CouleurFond,0))
EndProcedure
Procedure GCloseConsole()
  Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndProcedure
Procedure GConsoleColor(CouleurTexte, CouleurFond)
  DefinirCouleurTexte(CouleurTexte)
  DefinirCouleurFond(CouleurFond)
  
  StartDrawing(WindowOutput(0))
  BackColor(Couleur(CouleurConsole\CouleurFond,0))
  FrontColor(Couleur(CouleurConsole\CouleurTexte,0))
  StopDrawing()
EndProcedure
Procedure GConsoleLocate(x, y)
  XX = X : YY = Y
  SetCaretPos_(XX, YY)
EndProcedure
Procedure GConsoleTitle(Titre$)
  SetWindowTitle(0,Titre$)
EndProcedure
Procedure.s GInkey() ; sort le dernier caractère frappé
  resultat$=KeyboardInkey()
  ProcedureReturn resultat$
EndProcedure
Procedure.s GInput() ; sort une chaîne de caractères
  Repeat
    
    ExamineKeyboard()  
    ; Efface le dernier caractère si la touche 'Back' est appuyée
    ;
    If KeyboardReleased(#PB_Key_Back)  
      Texte$ = Left(Texte$, Len(Texte$)-1)
    Else
      resultat$=KeyboardInkey()
      
      If FindString("1234567890 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzéèçàù", resultat$) ; Ajouter vos propres caractères valides ici
        Texte$ + resultat$
      EndIf ; Ajouter le nouveau texte à l'actuel (le cas échéant)
      
    EndIf
    
  Until KeyboardPushed(#PB_Key_Return)
  
  ProcedureReturn Texte$
EndProcedure
Procedure GOpenConsole(X.i, Y.i, Largeur.i, Hauteur.i, Titre.s)
  OpenWindow(0,X,Y,Largeur,Hauteur,Titre,#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  InitSprite()
  OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0))
  InitKeyboard()
EndProcedure
Procedure GPrint(Texte$)
  StartDrawing(WindowOutput(0))
  DrawText(XX, YY, Texte$, Couleur(CouleurConsole\CouleurTexte,0), Couleur(CouleurConsole\CouleurFond,0))
  XX + TextWidth(Texte$)
  StopDrawing()
EndProcedure
Procedure GPrintN(Texte$)
  StartDrawing(WindowOutput(0))
  DrawText(XX, YY, Texte$, Couleur(CouleurConsole\CouleurTexte,0), Couleur(CouleurConsole\CouleurFond,0))
  YY + TextHeight(Texte$)
  StopDrawing()
EndProcedure
;-***TEST***
CompilerIf #PB_Compiler_IsMainFile
  GopenConsole(0,0,1360,730,"Test")
  
  GConsoleColor(14, 1)
  GConsoleTitle("Essai console graphique")
  GClearConsole()
  ObtenirCouleurConsole()
  
  
  GConsoleLocate(10, 10)
  GPrint("Essai de texte 1 ")
  GPrint("Essai de texte 2 ")
  GPrintN("Essai de texte 3 ")
  GConsoleLocate(10, YY)
  GPrint("Essai de texte 4 ")
  GPrint("Essai de texte 5 ")
  
  GConsoleLocate(50,60)
  GPrint("Essai GconsoleLocate(50,60)")
  GConsoleLocate(10, 75)
  GPrint("Etranger, quel est ton nom ? (Entrée) ")
  Reponse.s = GInput()
  GPrint(Reponse)
  GCloseConsole()
CompilerEndIf  Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz  PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
						Un homme doit être poli, mais il doit aussi être libre !
Re: Déplacer le curseur en mode graphique
Pourquoi n'utilises tu pas un Canvas ? Tu peux même remplacer ton curseur par le #PB_Cursor_IBeam
			
			
									
									~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
						⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Déplacer le curseur en mode graphique
Tu mélange TOUT !! !!! ! !
Si tu te fais ton propre système d'affichage de texte, c'est à toi de tout contrôler. Ne rajoute pas des choses qui n'ont rien à voir comme la commande SetCaretPos_()
			
			
									
									Code : Tout sélectionner
Procedure GConsoleLocate(x, y)
	XX = X : YY = Y
	;SetCaretPos_(XX, YY) ; Sert absolument à RIEN.
EndProcedure
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
)
						Mon site : CeriseCode (Attention Chantier perpétuel
 )
)Re: Déplacer le curseur en mode graphique
Eh Bien pourtant, ça fonctionne !graph100 a écrit :Tu mélange TOUT !! !!! ! !
C'est pas idiot ton idée et en plus, le canvas est le gadget le mieux géré !Ar-S a écrit :Pourquoi n'utilises tu pas un Canvas ?
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz  PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
						Un homme doit être poli, mais il doit aussi être libre !
Re: Déplacer le curseur en mode graphique
bien sur que ça fonctionne, puisque la commande setcaretpos_() est inutile...
Bref, c'est pas grave, simplement que c'étais impossible de répondre correctement à ta question avec les infos de base que tu nous a filé.
Bref. Bonne continuation dans ton projet.
			
			
									
									Bref, c'est pas grave, simplement que c'étais impossible de répondre correctement à ta question avec les infos de base que tu nous a filé.
Bref. Bonne continuation dans ton projet.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
)
						Mon site : CeriseCode (Attention Chantier perpétuel
 )
)

