Bonjour à tous
Je suis nouvel utilisateur PureBasic et peu expérimenté en programmation (PB 1res impressions excellentes) dans le passé j'ai toucher un peu au c et au pascal, c'était au temps de msdos, ça date un peu.
Je voudrais savoir comment dans un StringGadget ou EditorGadget il est possible de récupérer la position du curseur text et comment le positionner à l'endroit choisi, et, en espérant ne pas abuser, comment préselectionner une portion de text et récupérer une sésection.
Merci pour votre aide
cordialement micio
StringGadget [RESOLU]
StringGadget [RESOLU]
Dernière modification par micio le dim. 09/déc./2007 13:21, modifié 1 fois.
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Ptet via un S/GetGadgetState
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Bienvenue
Pour la position du curseur dans un EditorGadget
Code trouvé sur CodeArchivde PureArea.net.
Tu peux aussi télécharger cet utilitaire, il reprend les 1900 codes du CodeArchiv, mais en facilitant la recherche par différents filtres.
Pour la position du curseur dans un EditorGadget
Code trouvé sur CodeArchivde PureArea.net.
Tu peux aussi télécharger cet utilitaire, il reprend les 1900 codes du CodeArchiv, mais en facilitant la recherche par différents filtres.
Code : Tout sélectionner
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1953&highlight=
; Author: Danilo (updated for PB4.00 by blbltheworm)
; Date: 08. August 2003
; OS: Windows
; Demo: No
;
; by Danilo, 08.08.2003 - german forum
;
Procedure EditorGadgetCursorX(Gadget)
; returns X-Pos of Cursor
REG = GadgetID(Gadget)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1)
EndProcedure
Procedure EditorGadgetCursorY(Gadget)
; returns Y-Pos of Cursor
REG = GadgetID(Gadget)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1
EndProcedure
Procedure EditorGadgetCursorPos(Gadget)
; returns relative Position of Cursor
SendMessage_(GadgetID(Gadget),#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn Range\cpMax
EndProcedure
Procedure EditorGadgetLocate(Gadget,x,y)
; Set cursor position
REG = GadgetID(Gadget)
CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0)
LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0)
If LLength >= x-1
CharIdx + x-1
EndIf
Range.CHARRANGE
Range\cpMin = CharIdx
Range\cpMax = CharIdx
SendMessage_(REG,#EM_EXSETSEL,0,Range)
EndProcedure
OpenWindow(1,200,200,300,200,"EditorGadget",#PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
EditorGadget(1,5,5,290,190)
AddGadgetItem(1,-1,"Hallo!")
AddGadgetItem(1,-1,"")
AddGadgetItem(1,-1,"Hier ein paar Proceduren")
AddGadgetItem(1,-1,"zur Steuerung des Cursors")
AddGadgetItem(1,-1,"im EditorGadget.")
EditorGadgetLocate(1,7,2)
SetActiveGadget(1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow: End
EndSelect
SetWindowText_(WindowID(1),"X: "+Str(EditorGadgetCursorX(1))+" Y: "+Str(EditorGadgetCursorY(1))+" -- Position: "+Str(EditorGadgetCursorPos(1)))
ForEver
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Je ne connaissais pas cet utilitaire. Adopté !comtois a écrit :Tu peux aussi télécharger cet utilitaire, il reprend les 1900 codes du CodeArchiv, mais en facilitant la recherche par différents filtres.
Merci comtois !
Lio

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !