Page 1 sur 1
saisie d'un nouveau texte dans StringGadget
Publié : sam. 22/oct./2022 13:43
par pasbel
Salutatous
J'utilise dans mon code un StringGadget sous la forme :
Quand je clique sur le champs, avec #PB_Event_Gadget et EventGadget(), je reçois bien l'index de mon gadget.
Quand je modifie le texte, comment puis-je valider le nouveau texte saisi afin de pouvoir le récupérer ensuite avec GetGadgetText(1) ?
J'ai un peu chercher sur le forum, pas trouvé ou passé à côté...
Re: saisie d'un nouveau texte dans StringGadget
Publié : sam. 22/oct./2022 15:01
par Marc56
Créer un raccourci clavier sur la touche Entrée avec
AddKeyboardShortcut() et
#PB_Shortcut_Return
ou créer un bouton [ Valider ] qui lit le contenu du gadget GetGadgetText(1)
Re: saisie d'un nouveau texte dans StringGadget
Publié : sam. 22/oct./2022 17:21
par pasbel
Merci de ta réponse.
Aucune possibilité de retour "live" de la nouvelle chaine de caractères du coup, dommage.
Je vais tenter un truc... (houlaaa !)
Re: saisie d'un nouveau texte dans StringGadget
Publié : sam. 22/oct./2022 17:44
par pasbel
Du coup, ma solution, car, je n'ai pas forcément besoin de savoir de suite ce qui a été tapé, dès qu'il y a un nouvel événement EventGadget(), je déclenche la lecture de mon champs.
Merci pour ton aide

Re: saisie d'un nouveau texte dans StringGadget
Publié : sam. 22/oct./2022 20:42
par Ar-S
De façon automatique en surveillant les "changements"
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 322, 205, "Les options de StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 8, 10, 306, 30, "ROUGE")
Repeat
Event = WaitWindowEvent(10)
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
If EventType() = #PB_EventType_Change
Debug GetGadgetText(1)
EndIf
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
EndIf
Re: saisie d'un nouveau texte dans StringGadget
Publié : sam. 22/oct./2022 23:39
par Ollivier
Je trouve très bien la soluce d'ArS. Je l'ai utilisé pour contrôler EditorGadget() donc très bonne approche.
Mais, pour un stringGadget je préfère la méthode de marc56 : c'est standardisé, côté client, et c'est contrôlable, côté codeur :
Add taratata ()
Remove taratata ()
Il y a beaucoup d'autres techniques : on peut blender les deux méthodes. Sur 3 stringGadgets A, B et C et un bouton Ok,
si B est changé, A est validé;
si C est changé, A et B sont validés;
si Ok est cliqué, ou la touche [Enter] est pressée, A, B et C sont validés.
Re: saisie d'un nouveau texte dans StringGadget
Publié : dim. 23/oct./2022 7:11
par pasbel
C'est effectivement plus souple puisque les caractère sont même pris au fur et à mesure.
Je n'arrivais pas à utiliser #PB_EventType_Change, peut-être un truc dans mon code qui le bloquait ou mal utilisé.
Merci beaucoup, je vais ré-essayer ainsi
Re: saisie d'un nouveau texte dans StringGadget
Publié : dim. 23/oct./2022 9:47
par pasbel
Si je rajoute la ligne "Debug Event" (voir code modifié ci-dessous), la console m'affiche 2 fois la valeur, y a-t-il une explication à ça ?
J'ai fait une petite routine pour éviter ça mais je me pose quand même la question...
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 322, 205, "Les options de StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 8, 10, 306, 30, "ROUGE")
Repeat
Event = WaitWindowEvent(10)
Select Event
Case #PB_Event_Gadget
Debug Event
Select EventGadget()
Case 1
If EventType() = #PB_EventType_Change
Debug GetGadgetText(1)
EndIf
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
EndIf
Re: saisie d'un nouveau texte dans StringGadget
Publié : dim. 23/oct./2022 13:57
par Ollivier
Elle peut même te l'afficher 3 fois si tu as plusieurs gadgets :
1 fois pour acquérir le focus
1 fois pour le changement (ajout/modification/suppression) d'un caractère du texte
1 fois pour quitter le focus
Regarde l'aide de stringGadget, et tu trouveras les 2 autres constantes de types d'évènement dans la page d'aide.