Un peu de sérieux
En fait, normalement, et si j'ai bien compris, la structure CHARRANGE devrait retourner la position de début, (cpMin) et celle de fin (cpMax), de la recherche. Et là, elle retourne les valeurs qu'on lui a donné, et pas autre chose
C'est seulement vrai, si tu utilises une structure FINDTEXTEX
avec le message: SendMessage_(GadgetID(Gadget),
#EM_FINDTEXTEX,#FR_MATCHCASE|#FR_DOWN,toto)
Soit en reprenant l'exemple de Comtois:
Code : Tout sélectionner
Global Texte$
Texte$ = "essai"
Procedure.l ChercheText(Gadget)
toto.FINDTEXTEX
toto\chrg\cpMin = 0
toto\chrg\cpMax = -1
toto\lpstrText = @Texte$
position=SendMessage_(GadgetID(Gadget),#EM_FINDTEXTEX,#FR_MATCHCASE|#FR_DOWN,toto)
Debug "toto\chrgText\cpMin= "+Str(toto\chrgText\cpMin)
Debug "toto\chrgText\cpMax= "+Str(toto\chrgText\cpMax)
SendMessage_(GadgetID(Gadget),#EM_EXSETSEL, 0, toto\chrgText)
ProcedureReturn position
EndProcedure
OpenWindow(0,0,0,300,330,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Cherche")
CreateGadgetList(WindowID())
EditorGadget(0,5,5,290,290)
AddGadgetItem (0,-1,"Toto" )
AddGadgetItem (0,-1,"Tututiti" )
AddGadgetItem (0,-1,Texte$ )
ButtonGadget(1,5,300,100,20,"Cherche " + Texte$)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow: End
Case #PB_Event_Gadget
Select EventGadgetID()
Case 1: Debug ChercheText(0)
EndSelect
EndSelect
ForEver
On pourrait aussi faire la sélection en utilisant les paramètres: position et position+len (texte$).
La prochaine question de Chris pourrait être: çà marche pour la première chaine trouvée mais pour la suivante.....