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)
EndProcedure
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
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
