Salut,
Lorsqu'on place une grande quantité de texte dans un editor gadget, y a t-il un moyen pour "se positionner" sur la dernière ligne du texte ?
J'ai pas trouvé de façon de le faire avec les fonctions disponibles ?!!
Merci
Question EditorGadget
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: Question EditorGadget
l'editor de text de Purebasic répond aux normes du RTF 
fait une recherche sur le RTF .... (il me semble avoir fait un Tuto la dessus... )
ici :
http://www.purebasic.fr/french/viewtopi ... =21&t=6664
Tuto Numero 15 de la section "utilisateur Avertis"
un truc du genre devrai marcher

fait une recherche sur le RTF .... (il me semble avoir fait un Tuto la dessus... )
ici :
http://www.purebasic.fr/french/viewtopi ... =21&t=6664
Tuto Numero 15 de la section "utilisateur Avertis"
un truc du genre devrai marcher
Code : Tout sélectionner
Procedure Editor_Locate2(Gadget,x,Y)
; ;Par Progi1984
; 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
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Question EditorGadget
Solution sans APImajikeyric a écrit :J'ai pas trouvé de façon de le faire avec les fonctions disponibles ?!!
Code : Tout sélectionner
Enumeration
#Mainform
#Editor
EndEnumeration
Define.l Event, GEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "Test", WindowStyle)
EditorGadget(#Editor, 10, 10, 480, 380)
EndProcedure
Procedure Start()
Open_MainForm()
;Quelques ligne pour le test
For n=1 To 1000
AddGadgetItem(#Editor, -1, "Ligne "+Str(n))
Next
;Et on se place sur la derniere ligne
SetActiveGadget(#Editor)
;Se rendre à la ligne 31
;SetGadgetItemText(#Editor, 30, GetGadgetItemText(#Editor, 30))
;Se rendre sur la derniere ligne
SetGadgetItemText(#Editor, CountGadgetItems(#Editor), GetGadgetItemText(#Editor, CountGadgetItems(#Editor)))
EndProcedure
start()
Repeat
Event = WaitWindowEvent(10)
GEvent = EventGadget()
Select Event
Case #PB_Event_Gadget
Select GEvent
EndSelect
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%
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: Question EditorGadget
Merci pour vos 2 solutions
Celle sans API, n'était pas aussi évidente que ça : pour se positionner sur une ligne, en changer le contenu et avoir le focus.
Je ne savais pas que l'editor acceptait le RTF, c'est intéressant !

Celle sans API, n'était pas aussi évidente que ça : pour se positionner sur une ligne, en changer le contenu et avoir le focus.
Je ne savais pas que l'editor acceptait le RTF, c'est intéressant !
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Question EditorGadget
Ouimajikeyric a écrit :Celle sans API, n'était pas aussi évidente que ça : pour se positionner sur une ligne, en changer le contenu.

Tout comme la ListIconGadget() on peut ajouter ou insérer un item, supprimer un item, les compter etc .... mais bizarrement on ne peut pas se positionner directement sur une ligne sans passer par l'astuce que je mentionne.
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: Question EditorGadget
il est vrai que coté gestion de texte dans de la liste PB est perfectible. Pour ce genre de projets, j'opterai pour une alliance structure/tableau ou map
Ainsi l'editor ne sert que pour l'affichage, le traitement se faisant avec de simple replacestring pour la modification et SetGadgetItemText pour le positionnemnt. le tout utilisant les données du tableau.
Peut-être que c'est un résonnement à la con j'ai pas testé mais ça me parait palier (^^)
On travail qu'avec du pré calculé en somme.
Code : Tout sélectionner
structure Mots
NumLigne.i
NumMot.i
Mot.s
endstructure
Peut-être que c'est un résonnement à la con j'ai pas testé mais ça me parait palier (^^)
On travail qu'avec du pré calculé en somme.
~~~~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