Comment peut-on récupérer la position du curseur dans un EditorGadget ou un StringGadget ?
A+
Position curseur
Merci !,
J'ai testé avec un EditorGadget et un StringGadget multiligne et ça fonctionne aussi. A ceci prés que pos contient la position du curseur en nbe de caractéres ! Il faut donc retrouver le nombre de lignes ... c'est lourd mais faisable.
Par contre je ne sais pas si cela à de l'importance mais la commade devrait avoir 2 long en retour :
SendMessage_(GadgetID(#EditorGadget), #EM_GETSEL, #Null, @PosDebutSelection,@PosFinSelection)
Cela ne va t'il pas créer un phénoméne de 'bourrage' de la pile de Windows ?
J'ai testé avec un EditorGadget et un StringGadget multiligne et ça fonctionne aussi. A ceci prés que pos contient la position du curseur en nbe de caractéres ! Il faut donc retrouver le nombre de lignes ... c'est lourd mais faisable.
Par contre je ne sais pas si cela à de l'importance mais la commade devrait avoir 2 long en retour :
SendMessage_(GadgetID(#EditorGadget), #EM_GETSEL, #Null, @PosDebutSelection,@PosFinSelection)
Cela ne va t'il pas créer un phénoméne de 'bourrage' de la pile de Windows ?
Je sais pas, mon PC est branché sur le courant de l'EDFCela ne va t'il pas créer un phénoméne de 'bourrage' de la pile de Windows ?

(Ah ah!!! Elle est bonne, celle-là... non?
Non? Bon... Tant pis

En fouillant dans CodeArchiv, j'ai trouvé ce code.
Si ça peut t'aider!
Code : Tout sélectionner
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=862&highlight=
; Author: Danilo
; Date: 04. May 2003
; Allerdings bitte ich folgendes zu beachten:
; Das updaten via Timer ist nicht gut, sondern wurde hier von mir
; nur zu Demonstrationszwecken gewählt.
; Normalerweise sitzen die UpdatePunkte im WindowCallback...
;
; Hier geht es nur darum die Funktion der Prozeduren 'StringGadgetCursorX/Y' zu zeigen...
;
; by Danilo, 04.05.2003 - german forum
;
Procedure StringGadgetCursorX(gadget)
SendMessage_(GadgetID(gadget),#EM_GETSEL,@Min,@Max)
ProcedureReturn Max-SendMessage_(GadgetID(gadget),#EM_LINEINDEX,SendMessage_(GadgetID(gadget),#EM_LINEFROMCHAR,Min,0),0)+1
EndProcedure
Procedure StringGadgetCursorY(gadget)
SendMessage_(GadgetID(gadget),#EM_GETSEL,@Min,@Max)
ProcedureReturn SendMessage_(GadgetID(gadget),#EM_LINEFROMCHAR,Min,0)+1
EndProcedure
;- Programm
#STRINGGADGET1 = 1
Procedure UpdateStringGadgetPos()
Shared UpdateStringGadgetPos_oldX, UpdateStringGadgetPos_oldY
x = StringGadgetCursorX(#STRINGGADGET1)
y = StringGadgetCursorY(#STRINGGADGET1)
If x<>UpdateStringGadgetPos_oldX Or y<>UpdateStringGadgetPos_oldY
SetGadgetText(2,"X: "+RSet(Str(x),5,"0")+" Y: "+RSet(Str(y),5,"0"))
UpdateStringGadgetPos_oldX = x : UpdateStringGadgetPos_oldY = y
Beep_(800,10)
EndIf
EndProcedure
EOL.s = Chr(13)+Chr(10)
For a = 1 To 100
A$+"Zeile "+RSet(Str(a),3,"0")+EOL
Next a
A$+"<< ENDE >>"
OpenWindow(1,200,200,200,420,#PB_Window_SystemMenu,"")
CreateGadgetList(WindowID())
StringGadget(#STRINGGADGET1,3,3,194,394,A$,#ES_NOHIDESEL|#ES_MULTILINE|#WS_VSCROLL|#WS_HSCROLL)
SetGadgetFont(#STRINGGADGET1,LoadFont(1,"Lucida Console",14))
TextGadget(2,3,400,194,17,"")
SetTimer_(WindowID(),1,100,0)
Repeat
Select WaitWindowEvent()
Case #PB_EventCloseWindow: End
Case #WM_TIMER
UpdateStringGadgetPos()
EndSelect
ForEver
