OVH Cloud OVH Cloud

attendre o milieu d une fonction

4 réponses
Avatar
Achile
Bonjour,
Je voudrais savoir comment faire pour attendre au milieu d'une fonction.
Je m'explique:
J'ai un evenenement click avec une boucle (do while). Et je voudrais pouvoir
faire une pause a chaque boucle en attendant une action de l utilisateur qui
serait un otre evenement clic.
merci

4 réponses

Avatar
François Picalausa
"Achile" a écrit dans le message de
news:
Bonjour,
Je voudrais savoir comment faire pour attendre au milieu d'une
fonction.
Je m'explique:
J'ai un evenenement click avec une boucle (do while). Et je voudrais
pouvoir faire une pause a chaque boucle en attendant une action de l
utilisateur qui serait un otre evenement clic.
merci



Bonjour/soir,

Tu peux utiliser doevents et tester une variable privée de l'objet qui
changerait en même temps que le click.

Mais cette approche me semble consomatrice en processeur.
Pour bien faire, ta procédure devrait s'arrêter et le click suivant lancer
une autre procédure.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Guy DETIENNE
Salut ;O)

Tu mets un DoEvents dans ta boucle...

Guy

--
__________________________________
Tchao.net: L'informatique à votre dimension
www.tchao.net
Pour toute réponse, retirer le .nospam de l'adresse mail
ou cliquez ici http://cerbermail.com/?6nQ9U2fpkD

"Achile" a écrit dans le message de
news:
Bonjour,
Je voudrais savoir comment faire pour attendre au milieu d'une fonction.
Je m'explique:
J'ai un evenenement click avec une boucle (do while). Et je voudrais


pouvoir
faire une pause a chaque boucle en attendant une action de l utilisateur


qui
serait un otre evenement clic.
merci




Avatar
Zoury
> Mais cette approche me semble consomatrice en processeur.
Pour bien faire, ta procédure devrait s'arrêter et le click suivant lancer
une autre procédure.



ou la même.. ;O)

Voici un exemple
'***
' Form1
Option Explicit

Private Sub Command1_Click()
Call StartFlash(Picture1)
End Sub

Private Sub Command2_Click()
Call StopFlash
End Sub

Private Sub Form_Load()
Call Randomize
Call SetControlsPosition
End Sub

Private Sub SetControlsPosition()
Call Me.Move(2640, 3480, 9285, 7170)
Call Picture1.Move(120, 120, 8895, 5895)
Call Command2.Move(1440, 6120, 1215, 375)
Call Command1.Move(120, 6120, 1215, 375)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call StopFlash
End Sub

' Module1
Option Explicit

Private Declare Function Sleep _
Lib "kernel32" _
( _
ByVal dwMilliseconds As Long _
) As Long

Private m_bFlashActivated As Boolean

Private Sub Flash(ByRef pic As PictureBox)

' On boucle tant que m_bFlashActivated est vrai
Do While m_bFlashActivated

' modifie la couleur de background
pic.BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)

' permet l'exécution des
' messages stockés dans
' la pile de messages
DoEvents

' donne une pause au CPU.
' sans cette ligne,
' l'utilisation de ton
' processeur grimpera à 100%
Call Sleep(10)

Loop

End Sub

Public Sub StartFlash(ByRef pic As PictureBox)
m_bFlashActivated = True
Call Flash(pic)
End Sub

Public Sub StopFlash()
m_bFlashActivated = False
End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Zoury
j'ai oublié de préciser que le Form1 doit contenir un PictureBox et 2
CommandButtons.. ;O)