Page 1 sur 1
[Résolu] Faire un intervalle ?
Publié : jeu. 07/févr./2008 20:43
par Xpetera
Salut , j'aimerais simuler un interval pour faire une action avec un temps entre
Je vous montre mon code :
Code : Tout sélectionner
Enumeration
#liste1
EndEnumeration
OpenWindow(0,150,150,230,100,"w1")
CreateGadgetList(WindowID(0) )
ListIconGadget(#liste1,1,1,220,100,"zq",196)
test = 0
For test=0 To 5
Delay(1000)
AddGadgetItem(#liste1,1,"Test")
Next
Repeat
event = WaitWindowEvent() ; la boucle pour éviter que ca se ferme direct
If event = #PB_Event_Gadget
Select EventGadget()
EndSelect
EndIf
Until event = #WM_CLOSE
Il me semblais avoir vu un exemple je ne sais plus où pour faire ça.
Si quelqu'un pourrait me donner un exemple , ca serait vraiment sympa , merci

Publié : jeu. 07/févr./2008 21:04
par Octavius
Je ne comprends pas ce que tu veux exactement, une intervalle de quoi pour faire quoi ?
Publié : jeu. 07/févr./2008 21:05
par Xpetera
Eh bien pour par exemple ajouter toutes les deux secondes une ligne dans le ListGadgetIcon

Publié : jeu. 07/févr./2008 21:35
par Octavius
Ah je vois! Mais il faut que ton Addmachin soit dans la boucle principale, avec un compteur pour ne pas géner le déroulement normal de la boucle principale, exemple :
Code : Tout sélectionner
Enumeration
#liste1
EndEnumeration
OpenWindow(0,150,150,230,100,"w1")
CreateGadgetList(WindowID(0) )
ListIconGadget(#liste1,1,1,220,100,"zq",196)
TempsDeDepart=ElapsedMilliseconds() ; ton temps de départ
Repeat
event = WindowEvent() ; la boucle ne doit pas fonctionner avec WaitWindowEvent() !
Temps=ElapsedMilliseconds()-TempsDeDepart ; mise à jour du compteur de temps
If Temps>2000 ; si tu dépasses deux secondes
TempsDeDepart=ElapsedMilliseconds() ; tu réinitialise le compteur
AddGadgetItem(#liste1,1,"Test") ; et tu rajoutes ton élément
EndIf
If event = #PB_Event_Gadget
Select EventGadget()
EndSelect
EndIf
Until event = #WM_CLOSE
Publié : jeu. 07/févr./2008 21:36
par Gillou
Une autre méthode qui mange moins le processeur, tu peux modifier le code afin de mettre l'action désirée dans un procédure
Enumeration
#liste1
EndEnumeration
If OpenWindow (0,150,150,230,100, "w1" )
If CreateGadgetList ( WindowID (0) )
ListIconGadget ( #liste1 ,1,1,220,100, "zq" ,196)
S = 2 ; Boucle toutes les 2 secondes
; On initialise le timer numéro 1 pour la fenêtre 0
SetTimer_ ( WindowID (0), 1, 1000*S, 0)
Repeat
Select WaitWindowEvent ()
Case #WM_TIMER
; On ajoute un élément si il y en a moins de 5
If CountGadgetItems ( #liste1 ) < 5
AddGadgetItem ( #liste1 ,1, "Test" )
Else ; L'ajout s'arrête si il y a plus de 5 éléments
KillTimer_ ( WindowID (0), 1)
EndIf
Case #PB_Event_Gadget
Select EventGadget ()
Case #liste1
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
EndIf
EDIT version avec procedure
Enumeration
#liste1
EndEnumeration
Global Inc ; Variable d'incrémentation
Procedure UpdateEach2S()
; On ajoute un élément si il y en a moins de 5
If Inc < 5
Inc + 1
AddGadgetItem ( #liste1 ,1, "Test" )
Else ; L'ajout s'arrête si il y a plus de 5 éléments
KillTimer_ ( WindowID (0), 1)
EndIf
EndProcedure
If OpenWindow (0,150,150,230,100, "w1" )
If CreateGadgetList ( WindowID (0) )
ListIconGadget ( #liste1 ,1,1,220,100, "zq" ,196)
S = 2 ; Boucle toutes les 2 secondes
; On initialise le timer numéro 1 pour la fenêtre 0
SetTimer_ ( WindowID (0), 1, 1000*S, @UpdateEach2S())
Repeat
Select WaitWindowEvent ()
Case #PB_Event_Gadget
Select EventGadget ()
Case #liste1
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
EndIf
Publié : jeu. 07/févr./2008 21:48
par Xpetera
D'accord , merci pour vos deux codes
