Clic multiples sur gadgets

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Cinabre
Messages : 11
Inscription : dim. 31/oct./2004 15:17
Localisation : Maine et loire
Contact :

Clic multiples sur gadgets

Message 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.
Cinabre
Messages : 11
Inscription : dim. 31/oct./2004 15:17
Localisation : Maine et loire
Contact :

Message 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 :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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é)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Cinabre
Messages : 11
Inscription : dim. 31/oct./2004 15:17
Localisation : Maine et loire
Contact :

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je te l'avais pourtant ecrit !! :?

Code : Tout sélectionner

  case  #WM_LBUTTONUP
            Debug "Bouton gauche relaché" 
Cinabre
Messages : 11
Inscription : dim. 31/oct./2004 15:17
Localisation : Maine et loire
Contact :

Message par Cinabre »

Dobro a écrit :je te l'avais pourtant ecrit !! :?

Code : Tout sélectionner

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