Boucle dans les event ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Boucle dans les event ?

Message par Shinao »

Bonjour, again,

Vu que j'ai maintenant la méthode pour faire des gadgets avec des ID automatique, j'aurais aimé savoir comment gérer les events sur ceux-ci.

Voila ce que j'ai testé dans ma boucle event :

Code : Tout sélectionner

Case #mongadget1
...
...

For i = 1 To NbLog Step 1
                  Case i
                    Select EventType()
                      Case #PB_EventType_LeftClick
                        Messagerequester("", "Yeah")
                    EndSelect
 Next
NbLog liste le nombre de gadget automatique
Mais seulement quand je fais une boucle, il ne prend pas en compte mes select avant pour les event...

Donc j'ai fais ça :

Code : Tout sélectionner

For i = 1 To NbLog Step 1

            Event = WaitWindowEvent()
  
            Select Event
              Case #PB_Event_Gadget
                Select EventGadget()

                  Case i
                    Select EventType()
                      Case #PB_EventType_LeftClick
                        Messagerequester("", "Yeah")
                    EndSelect
                EndSelect
            EndSelect
          Next
Et la, il ne se passe rien, il ne prend pas en compte ma boucle.

De plus, je n'arrive pas à debug dans mon select WindowEvent() pour voir ou il y a un problème, en même temps c'est assez logique...


Merci pour toute aide
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Boucle dans les event ?

Message par case »

tu ne dois pas mettre le waitwindowevent() dans ta boucle for/next mais a l'exterieur de celle ci

essaie comme ca

Code : Tout sélectionner

event=waitwindowevent()
if event  ; si un evenement est déclenché
  select event
    case #PB_Event_Gadget  ; il s'agit d'un gadget
    gad=eventgadget()
    for i=1 to nblog                ; boucle de test
      if gad=i                         ; si le gadget est le même que le declencheur
         select eventtype()    
           case #pb_eventtype_leftclick  ; bouton gauche 
             Messagerequester("", "Yeah") 
             break                                    ;sort de la boucle for/next
         endselect
      endif
    next
  endselect
endif
ImageImage
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Boucle dans les event ?

Message par graph100 »

@Case : arf t'as été plus rapide :D

@Shinao : bah regarde le code qui suis :mrgreen:

Code : Tout sélectionner

#offset_gadget_dynamique = 100

Nombre_gadget = 10

;{ ouverture de la fenetre, et des gadgets

If OpenWindow(0, 0, 0, 210, 500, "Test pour Shinao", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
	
	; gadget qui va nous servir pour afficher les résultats
	ButtonGadget(0, 10, 10, WindowWidth(0) - 20, 20, "");, #PB_Text_Border)
	
	
	;{ on crée les gadgets dynamiques
	For a = 1 To Nombre_gadget
		ButtonGadget(#offset_gadget_dynamique + a, 10, a * 30 + 10, WindowWidth(0) - 20, 20, "Boutton : " + Str(a))
		
	Next
	;}
	
Else
	End
EndIf

;}


;{ boucle principale

Repeat
	event = WaitWindowEvent()
	
	If event = #PB_Event_Gadget
		
		; le select pour traiter les gadgets que tu connais et qui sont fixé
		Select EventGadget()
			Case 0
				SetGadgetText(0, "")
				
		EndSelect
		
		
		; la boucle pour traiter les gadgets dynamiques
		For a = 1 To Nombre_gadget
			
			If EventGadget() = #offset_gadget_dynamique + a
				
				SetGadgetText(0, "Le bouton : " + GetGadgetText(#offset_gadget_dynamique + a) + " a été appuyé")
				
			EndIf
		Next
		
	EndIf
	
	
Until event = #PB_Event_CloseWindow

;}


End
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Boucle dans les event ?

Message par Shinao »

Je n'arrive pas à l'appliquer à mon code, j'ai l'impression que c'est la même chose, a part le if eventgadget(), d'ailleurs ce qui est logique pour une boucle, mais mon Case devrait fonctionner aussi.

Je vous met une plus grande partie du code modifié un peu pour que ça ressemble au votre (ne fonctionnant pas) :

Code : Tout sélectionner

Repeat
  Event = WaitWindowEvent()
  
  Select Event
      Case #PB_Event_Gadget
          Select EventGadget()
         ;mes constantes dont je connais le nom
             Case #ImageFlagEurope
          ;mes fonctions

          For i = 1 To NbLog Step 1
                  If EventGadget() = Programmes(i-1)\pid ;pid a une valeur numérique
                    Select EventType()
                      Case #PB_EventType_LeftClick
                        ChangeEtape(2)
                    EndSelect     
                  EndIf
                EndSelect
          Next
          
      EndSelect
  EndSelect
Until Event = #PB_Event_CloseWindow
Or ceci ne fonctionne pas, est-ce parce que ce n'est pas autorisé ou est-ce moi qui as fait des erreurs dans la structure Programmes ?


Merci pour vos réps!
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Boucle dans les event ?

Message par Shinao »

Corrigé :

Code : Tout sélectionner

Repeat
  Event = WaitWindowEvent()
 
  Select Event
      Case #PB_Event_Gadget
          Select EventGadget()
         ;mes constantes dont je connais le nom
             Case #ImageFlagEurope
          ;mes fonctions
      EndSelect
          For i = 1 To NbLog Step 1
                  If EventGadget() = Programmes(i-1)\pid ;pid a une valeur numérique
                    Select EventType()
                      Case #PB_EventType_LeftClick
                        ChangeEtape(2)
                    EndSelect     
                  EndIf
                EndSelect
          Next
  EndSelect
Until Event = #PB_Event_CloseWindow
Il fallait donc que je ferme le Select eventgadget() avant de faire une condition dessus.

Bref, merci à vous :)
Répondre