Arret d'un boucle par appui d'un bouton [Résolu]

math3002 6 Messages postés lundi 6 novembre 2006Date d'inscription 15 novembre 2006 Dernière intervention - 8 nov. 2006 à 15:35 - Dernière réponse : DeltaFX 459 Messages postés lundi 19 avril 2004Date d'inscription 8 avril 2009 Dernière intervention
- 22 nov. 2006 à 18:04
Je souhaiterai faire une boucle while tant mon bouton n'est pas appuyé mais je ne sais pas ce que mettre comme condition

while not ??? do
begin
  monAction
end;

Y a-t-il une fonction du style Bouton.Click?
Merci d'avance
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 8 nov. 2006 à 16:38
3
Merci
"'Application.ProcessManager' ?
C'est sa qui va empecher que je puisse plus cliquer sur aucun bouton pendant ma boucle?"

c'est le contraire, ça vas permettre a ton programm de process (traiter) les message que windows lui envoye (comme un click par exemple).

Si ton traitement est long, ne l'appel pas trop souvent. cela ralentis pas mal le programme. fait des essais...

bon code,

Merci cs_Loda 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de cs_Loda
Meilleure réponse
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 8 nov. 2006 à 20:20
3
Merci
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.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
Meilleure réponse
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 9 nov. 2006 à 14:07
3
Merci
c'est procesSmessageS , pas ProcesMessage

:-D

tant qu'a être juste....

moi, ça m'écorche pas tant. tant qu'on sait de quoi on parle....


PS pour math3002:
stp, accept les réponses une fois que tu les a testées.

Merci cs_Loda 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de cs_Loda
Meilleure réponse
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 9 nov. 2006 à 14:12
3
Merci
AH PU**** j'trouve le moyen de faire une faute dans ma correction .... AHHHH çà m'ecorche encore PLUS ... auto-flagélation avec des Orties !!!

Merci elguevel 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de elguevel
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 8 nov. 2006 à 15:58
1
Merci
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
Commenter la réponse de JulioDelphi
math3002 6 Messages postés lundi 6 novembre 2006Date d'inscription 15 novembre 2006 Dernière intervention - 8 nov. 2006 à 16:20
1
Merci
Merci c'est ça
Mais c'est quoi 'Application.ProcessManager' ?
C'est sa qui va empecher que je puisse plus cliquer sur aucun bouton pendant ma boucle?
Commenter la réponse de math3002
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 8 nov. 2006 à 16:25
1
Merci
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;

=)
Commenter la réponse de JulioDelphi
math3002 6 Messages postés lundi 6 novembre 2006Date d'inscription 15 novembre 2006 Dernière intervention - 8 nov. 2006 à 16:29
1
Merci
Merci beaucoup
Commenter la réponse de math3002
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 8 nov. 2006 à 18:06
1
Merci
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;

<hr size="2" width="100%" />Croc (click me)
Commenter la réponse de f0xi
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 9 nov. 2006 à 09:02
1
Merci
lol, si on s'y met tous on va y arriver...
Commenter la réponse de cs_Loda
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 9 nov. 2006 à 09:33
1
Merci
C'est Application.ProcesMessage, pas Application.ProcessManager !

Dsl mais çà m'écorche lol

Bon Code ;-)
Commenter la réponse de elguevel
Cirec 4224 Messages postés vendredi 23 juillet 2004Date d'inscription 5 juin 2018 Dernière intervention - 10 nov. 2006 à 11:18
1
Merci
Il a quand même fallut trois Admins pour arriver à une réponse aussi simple et surtout si élémentaire ...

    
@+
Cirec

<hr size="2" />
Commenter la réponse de Cirec
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 10 nov. 2006 à 11:23
1
Merci
*vois pas le rapport avec le fait d'être admin*

Mon site DELPHI =)
Commenter la réponse de JulioDelphi
Cirec 4224 Messages postés vendredi 23 juillet 2004Date d'inscription 5 juin 2018 Dernière intervention - 10 nov. 2006 à 13:05
1
Merci
Avant toutes choses ... c'était une plaisanterie et sans méchanceté aucune ...

je n'ai pas besoin de rapport puisque c'est une constatation
 
@+
Cirec

<hr size="2" />
Commenter la réponse de Cirec
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 10 nov. 2006 à 13:11
1
Merci
L'admin est censé etre une force vive, bourré de connaissance, ne manquant jamais de réponse et faisant preuve d'une objectivité sans faille :-)

non ?
Commenter la réponse de elguevel
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 10 nov. 2006 à 21:23
1
Merci
Elle me plait bien cette définition d'Elguevel.
Je propose qu'on la mette dans le dico !

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net
Commenter la réponse de cs_Delphiprog
DeltaFX 459 Messages postés lundi 19 avril 2004Date d'inscription 8 avril 2009 Dernière intervention - 22 nov. 2006 à 18:04
1
Merci
L'admin est censé









être





une
force vive : on l'appelle Damoclès !





être





bourré de connaissance : il sait COMMENT ramener un quota utilisateur à 20 ko.....

ne jamais manquer de réponse :



il PEUT ramener un quota utilisateur à 20 ko.....













être





d'une objectivité sans faille : l'utilisateur EST LA SOURCE DE TOUT LES MAUX, ramenons lui son quota à 20ko !













Fear the Wrath of the (SYS/DBA)Admin
Commenter la réponse de DeltaFX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.