OVH Cloud OVH Cloud

interruption de boucle

5 réponses
Avatar
michael forton
bonjour,
je fais une boucle qui effectue des calculs et un certain nombre de dessin
sur une picture box de la form à chaque boucle. Je voudrais interrompre la
boucle à chaque incrementation pour afficher des resultats et des dessins.
Comme si on tournait les pages d'un livre. Pour reprendre la boucle, on
cliquerait sur un bouton de commande 'suivant'.
Quelqu'un peut il m'aider???

5 réponses

Avatar
jmn
"michael forton" <michael a écrit dans le
message de news:
bonjour,
je fais une boucle qui effectue des calculs et un certain nombre de dessin
sur une picture box de la form à chaque boucle. Je voudrais interrompre la
boucle à chaque incrementation pour afficher des resultats et des dessins.
Comme si on tournait les pages d'un livre. Pour reprendre la boucle, on
cliquerait sur un bouton de commande 'suivant'.
Quelqu'un peut il m'aider???





dans section declaration
dim Pauseflag as boolean


dans votre 'boucle'

do ...


' interruption
pauseflag=true
do while pauseflag
doevents
loop

loop...

...
dans Bouton_suivant_click
pauseflagúlse
Avatar
Quasimodo
michael forton pretended :
bonjour,
je fais une boucle qui effectue des calculs et un certain nombre de dessin
sur une picture box de la form à chaque boucle. Je voudrais interrompre la
boucle à chaque incrementation pour afficher des resultats et des dessins.
Comme si on tournait les pages d'un livre. Pour reprendre la boucle, on
cliquerait sur un bouton de commande 'suivant'.
Quelqu'un peut il m'aider???



Bonjour,
VB6 n'étant pas multithreads, vous devrez dans un premier temps
vérifier si la condition de continuation est remplie pour continuer la
boucle. Ensuite vous devrez, lors de l'intéruption de la boucle,
sauvegarder l'ensemble des valeurs, pour pouvoir ré-appeler la
fonction/procédure qui contient le code à éxecuter (ainsi que la boucle
en question), en lui passant les valeurs sauvegardées pour continuer là
ou elle s'ai arretée.

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
forton michael
Je n'y arrive pas il tourne ds le vide sur la boucle
:do while pauseflag

doevents
loop
et ne s'arrete pas...
vous auriez un exemple de boucle que je pourrais interrompre, un bouton de
commande suivant et avec un texte qui s'afficherais dans une textbox a chaque
clic sur le bouton??
merci d'avance

"jmn" wrote:


"michael forton" <michael a écrit dans le
message de news:
> bonjour,
> je fais une boucle qui effectue des calculs et un certain nombre de dessin
> sur une picture box de la form à chaque boucle. Je voudrais interrompre la
> boucle à chaque incrementation pour afficher des resultats et des dessins.
> Comme si on tournait les pages d'un livre. Pour reprendre la boucle, on
> cliquerait sur un bouton de commande 'suivant'.
> Quelqu'un peut il m'aider???



dans section declaration
dim Pauseflag as boolean


dans votre 'boucle'

do ...


' interruption
pauseflag=true
do while pauseflag
doevents
loop

loop...

....
dans Bouton_suivant_click
pauseflagúlse








Avatar
Jean-Marc
"forton michael" <forton a écrit dans le
message de news:
Je n'y arrive pas il tourne ds le vide sur la boucle
:do while pauseflag

doevents
loop
et ne s'arrete pas...
vous auriez un exemple de boucle que je pourrais interrompre, un bouton de
commande suivant et avec un texte qui s'afficherais dans une textbox a


chaque
clic sur le bouton??
merci d'avance




Hello,
le programme suivant nécessite:
- un TextBox Text1
- 3 commandButton COmmand1, COmmand2, Command3

Créer une forme, mettre le textBox et les 3 commandButtons sur la forme

mettre le code ci dessous sur la forme:
Option Explicit
Option Base 1
Dim tablo() As Variant
Dim G_Suivant As Boolean
Dim G_Force_Quit As Boolean

' bouton SUIVANT
Private Sub Command1_Click()
G_Suivant = True
End Sub

' demarrage de la boucle principale
Private Sub Command2_Click()
Dim MAX_BOUCLE As Integer
Dim i As Integer
Dim indice As Integer
Dim Nb_Elem_Tab As Integer

G_Force_Quit = False
Nb_Elem_Tab = UBound(tablo)
indice = 0
MAX_BOUCLE = 100
For i = 1 To MAX_BOUCLE
indice = indice + 1
If indice > Nb_Elem_Tab Then
indice = 1
End If
Text1.Text = tablo(indice)
G_Suivant = False
While Not G_Suivant
DoEvents
Wend
If G_Force_Quit Then
Exit For
End If
Next i
End Sub

Private Sub Command3_Click()
G_Force_Quit = True
End Sub

' initialisation des controles
Private Sub Form_Load()
Text1.Text = ""
Command1.Caption = "Suivant"
Command2.Caption = "Lancer la boucle"
Command3.Caption = "Quitte boucle"
tablo() = Array("JE", "SUIS", "UN", "TEXTE", "QUI", "TOURNE", "EN",
"BOUCLE")
End Sub



et voila.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
Jean-Marc
"Jean-Marc" a écrit dans le message de
news:41b7598b$0$9307$
"forton michael" <forton a écrit dans


le
message de news:
> vous auriez un exemple de boucle que je pourrais interrompre, un bouton


de
> commande suivant et avec un texte qui s'afficherais dans une textbox a
chaque
> clic sur le bouton??



En fait, ce serait encore mieux comme ça:

While Not G_Suivant
DoEvents
Sleep (100) ' ne pas consommer du CPU pour rien
If G_Force_Quit Then 'force la sortie si nécessaire
Exit For
End If
Wend

avec tout en haut:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."