cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 8 nov. 2006 à 20:20
Après la boucle, pense à "réarmer" le flag bCancel si tu veux que àa fonctionne les fois suivantes :
procedure TForm1.Button2Click(Sender: TObject);
begin
while (not bCancel) and (ProgressBar.Position < 5000) do begin
{ code here }
if odd(ProgressBar.Position) then begin
ProgressBar.StepIt;
application.ProcessMessages;
end;
end;
//réinitialiser le flag
bCancel := False;
end;
May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 8 nov. 2006 à 15:58
declare un boolean du genre :
bCancel: boolean = false;
puis sous le clic du bouton : bCancel := true;
et dans la boucle tu vérifies si bCancel est TRUE, dans ce cas, tu arretes ta boucle.
qu'en penses-tu ?
ps : je pense que tu auras besoin de 'Application.ProcessMessages;' pour que l'appuie du bouton sois 'pris en compte' (je ne sais pas comment le dire :p) avant la fin de l boucle, la boucle va 'bloquer' en quelques sortes l'acces au bouton.
bon codage
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 8 nov. 2006 à 16:25
je viens de tester, ça marche :
je pose une TProgressBar (step=1, max=5000), et 2 TButton, je declare bCancel ici:
var
Form1: TForm1;
bCancel: boolean = false;
puis bouton 1 :
procedure TForm1.Button1Click(Sender: TObject);
begin
bCancel := true;
end;
bouton 2 :
procedure TForm1.Button2Click(Sender: TObject);
begin
while ProgressBar.Position <5000 do
begin
if bCancel then exit;
ProgressBar..StepIt;
application.ProcessMessages;
sleep(1);
end;
end;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 8 nov. 2006 à 18:06
var
Form1 : TForm1;
bCancel : boolean = false;
procedure TForm1.Button1Click(Sender: TObject);
begin
bCancel := true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
while (not bCancel) and (ProgressBar.Position < 5000) do begin
{ code here }
if odd(ProgressBar.Position) then begin
ProgressBar.StepIt;
application.ProcessMessages;
end;
end;
end;