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 :

Code : Tout sélectionner

StringGadget(1, 0, 0, 50, 20, "ROUGE")
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.