Page 1 sur 1

Clic multiples sur gadgets

Publié : ven. 03/juin/2005 13:35
par Cinabre
Bonjour,

J'ai un souci:
quand je clicques sur un boutton gadjet, il me prends plusieurs clic!
par exemple :
je crée un buttonGadget:

Code : Tout sélectionner

ButtonGadget(#Button_calc, 40, 360, 100, 30, "Calculatrice")
et je surveille l'appuie sur ce boutton dans ma boucle principale :

Code : Tout sélectionner

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget       
    Select EventGadgetID()
      Case #Button_calc
        If RunProgram("calc")=0 :MessageRequester("Erreur","Impossible de trouver la calculatrice", #PB_MessageRequester_Ok ):EndIf
    EndSelect
  EndIf
 
Until Event = #PB_EventCloseWindow
Lorsque je clicques dessus, cela me lance plusieurs occurences de la calculatrice.

Une seule me suffirait :wink:
Merci.

Publié : ven. 03/juin/2005 13:43
par Cinabre
J'ai trouvé une solution qui ne me paraît pas vraiment orthodoxe :

Code : Tout sélectionner

If EventType()=#PB_EventType_LeftClick
          If RunProgram("calc")=0 :MessageRequester("Erreur","Impossible de trouver la calculatrice", #PB_MessageRequester_Ok ):EndIf
          EndIf
Cela fonctionne sans que je comprenne vraiment pourquoi :)

Publié : ven. 03/juin/2005 19:37
par Backup
si tu as un blem de ce genre utilise les flag !!

un flag est une variable qui va te servir a retenir un etat par exemple
dans ton code

Code : Tout sélectionner


flag=0

 Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget       
    Select EventGadgetID()
      Case #Button_calc and flag=0
Flag=1 ; tu pourra remetre ce flag =0 lorsque l'evenement du relaché de bouton de souris avec le case suivant
        If RunProgram("calc")=0 :MessageRequester("Erreur","Impossible de trouver la calculatrice", #PB_MessageRequester_Ok ):EndIf

      case  #WM_LBUTTONUP
            Debug "Bouton gauche relaché"
 flag =0 
 endselect

Until Event = #PB_EventCloseWindow
tu comprend le principe ? :D

Publié : ven. 03/juin/2005 21:54
par Le Soldat Inconnu
si tu as utilisé AdvancedGadgetEvents(Etat), le comportement est normal car dans ce cas, tu recois tout les différent état du clic sur le bouton (appui, relaché, double cliqué)

Publié : sam. 04/juin/2005 10:18
par Cinabre
Le Soldat Inconnu a écrit :si tu as utilisé AdvancedGadgetEvents(Etat), le comportement est normal car dans ce cas, tu recois tout les différent état du clic sur le bouton (appui, relaché, double cliqué)
Exact!
Je règle ce pb en supprimant la ligne :)
J'ai compris comment cela fonctionne
J'aimerais bien gérer plus finement l'appui.
C'est à dire en sachant quand le boutton est relaché sur la gadget.
Mais pour cela il me faudrait connaître les différents messages gérés.
...
Je viens de trouver la liste des messages dans WIN32N.INC ; heureusement, ils sont assez parlants... enfin presque!
Merci

Publié : sam. 04/juin/2005 12:10
par Backup
je te l'avais pourtant ecrit !! :?

Code : Tout sélectionner

  case  #WM_LBUTTONUP
            Debug "Bouton gauche relaché" 

Publié : sam. 04/juin/2005 13:26
par Cinabre
Dobro a écrit :je te l'avais pourtant ecrit !! :?

Code : Tout sélectionner

  case  #WM_LBUTTONUP
            Debug "Bouton gauche relaché" 
Oups :n00b: