Hello,
Je voudrais executer une série de choses jusqu'a ce que l'user presse un boutton, je crois que je dois utiliser while mais je ne sais pas trop comment quelqu'un peut il m'aider ?
Hello,
Je voudrais executer une série de choses jusqu'a ce que l'user presse un boutton, je crois que je dois utiliser while mais je ne sais pas trop comment quelqu'un peut il m'aider ?
salut,
tu peux utiliser une boucle while ... do pour ton traitement, dans cette boucle tu testes la valeur d'une variable de niveau feuille, laquelle variable sera assignée à une valeur X lorsque tu cliqueras sur ton bouton.
exemple:
Button1 lance un traitement qui est arrêté par Button2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; Arret: Boolean;//variable test implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin //initialise la variable arret Arret := False; //boucle tant que la variable Arret n'est pas vraie while not Arret do begin //traitement ici ... Application.ProcessMessages(); //traite les messages dans la file d'attente end; //notification de fin ShowMessage('Fin de procédure !'); end; procedure TForm1.Button2Click(Sender: TObject); begin //arrete la procédure lancée Arret := True; end; end.
Ca peut fonctionner... Mais il serait ô combien plus judicieux d'utiliser un thread
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TTache = class(TThread) protected procedure Execute; override; public constructor Create(AOnTerminate : TNotifyEvent); end; TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure TacheTerminated(Sender: TObject); private { Déclarations privées } Tache : TTache; public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} constructor TTache.Create(AOnTerminate : TNotifyEvent); begin inherited Create(True); OnTerminate := AOnTerminate; FreeOnTerminate := True; Resume; end; procedure TTache.Execute; begin while not Terminated do begin // Ton traitement end; end; procedure TForm1.FormCreate(Sender: TObject); begin Tache := nil; end; procedure TForm1.FormDestroy(Sender: TObject); begin if Assigned(Tache) then begin Tache.Terminate; while Assigned(Tache) do Sleep(10); // Pour attendre que le thread se termine end; end; procedure TForm1.Button1Click(Sender: TObject); begin if not Assigned(Tache) then Tache := TTache.Create(TacheTerminated); end; procedure TForm1.Button2Click(Sender: TObject); begin if Assigned(Tache) then Tache.Terminate; end; procedure TForm1.TacheTerminated(Sender: TObject); begin ShowMessage('Fin de procédure !'); Tache := nil; end; end.
sjrd, ancien rédacteur/modérateur Delphi.
Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
Découvrez Mes tutoriels.
entièrement d'accord avec toi 8)Envoyé par sjrd
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager