salut
J'essaie de trouver la ligne actuelle d'un éditorgadget (celle sur laquelle se trouve le curseur) pour récupérer le texte de cette ligne.
Sauriez-vous comment faire ça (sous windows)?
Merci.
[résolu] editorgadget : trouver la ligne courante
[résolu] editorgadget : trouver la ligne courante
Dernière modification par blendman le mar. 13/août/2013 13:38, modifié 1 fois.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: editorgadget : trouver la ligne courante
Bonjour Blendman.
Code : Tout sélectionner
EnableExplicit
Enumeration
#MainForm
#Editor
EndEnumeration
Global Event, GEvent
Procedure Editor_GetCurrentLine(IdGadget.i)
Protected.i SelStart, selEnd
SendMessage_(IdGadget, #EM_GETSEL, @selStart, @selEnd)
ProcedureReturn SendMessage_(IdGadget, #EM_LINEFROMCHAR, SelStart, 0)
EndProcedure
OpenWindow(#MainForm, 0, 0, 500, 400, "Get current line from EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(#Editor, 10, 10, 480, 350)
SetActiveGadget(#Editor)
Repeat
Event = WaitWindowEvent()
Gevent = EventGadget()
Select event
Case #WM_LBUTTONUP, #WM_KEYUP
If GetActiveGadget() = #Editor
Debug "Numéro de Ligne: " + Str(Editor_GetCurrentLine(GadgetID(#Editor)))
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: editorgadget : trouver la ligne courante
Une variante qui permet de connaitre le texte de la ligne courante. J'utilise ici la fonction GetGadgetItemText() qui permet de connaitre le texte de la ligne courante.
D’après l'aide :
- GetGadgetItemText() Permet de connaitre le texte de la ligne courante.
- RemoveGadgetItem() Permet de supprimer une ligne.
- SetGadgetItemText() Permet de changer le contenu de la ligne spécifiée.
- CountGadgetItems() Permet de connaitre le nombre total de lignes
Mais par contre ........ il n'y a pas de fonction native permettant de connaitre la ligne active.
Étonnant non ?
Code : Tout sélectionner
EnableExplicit
Enumeration
#MainForm
#Editor
EndEnumeration
Global Event, GEvent, NumLine
Procedure Editor_GetCurrentLine(IdGadget.i)
Protected.i SelStart, selEnd
SendMessage_(IdGadget, #EM_GETSEL, @selStart, @selEnd)
ProcedureReturn SendMessage_(IdGadget, #EM_LINEFROMCHAR, SelStart, 0)
EndProcedure
OpenWindow(#MainForm, 0, 0, 500, 400, "Get current line from EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(#Editor, 10, 10, 480, 350)
SetActiveGadget(#Editor)
Repeat
Event = WaitWindowEvent()
Gevent = EventGadget()
Select event
Case #WM_LBUTTONUP, #WM_KEYUP
If GetActiveGadget() = #Editor
NumLine = Editor_GetCurrentLine(GadgetID(#Editor))
Debug "Ligne: "+ Str(NumLine) + " " +GetGadgetItemText(#Editor, NumLine)
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
- GetGadgetItemText() Permet de connaitre le texte de la ligne courante.
- RemoveGadgetItem() Permet de supprimer une ligne.
- SetGadgetItemText() Permet de changer le contenu de la ligne spécifiée.
- CountGadgetItems() Permet de connaitre le nombre total de lignes
Mais par contre ........ il n'y a pas de fonction native permettant de connaitre la ligne active.
Étonnant non ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: editorgadget : trouver la ligne courante
salut
Merci beaucoup, c'est exactement ce que je cherchais
J'ai pu ajouter le ctrl+D (dupliquer la ligne en cours) dans mon petit éditeur de texte.
Merci beaucoup, c'est exactement ce que je cherchais

J'ai pu ajouter le ctrl+D (dupliquer la ligne en cours) dans mon petit éditeur de texte.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english