Boucles entrainant la non réponse d'un programme

cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003 - 16 juil. 2003 à 20:59
cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003 - 18 juil. 2003 à 11:04
Bonjour,

Lorsqu'on exécute une boucle for, while ou repeat, toute les feuilles de l'application concernée sont "bloquées" et ne répondent pas pendant la durée de la boucle.

Dans mon programme, j'utilise plusieurs boucles vraiment très longues et complexes. Comment pouvoir commander leur arrêt à partir d'un bouton de l'application qui est alors à ce moment "bloquée" ?

Bien à vous,

5 réponses

sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
17 juil. 2003 à 12:18
Salut

Tu peux peut-être utiliser un TTImer.

Tu mets ensuite un boolean dans le OncLick de ton bouton pour gerer l'arret de ta boucle.

Et sur le Timer tu geres ta boucle suivant la valeur de ton boolean.

J'espere avoir ete assez clair.

A+
Sablor
0
cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003
17 juil. 2003 à 13:22
Merci pour cet astucieux conseil mais, malheureusement, je ne pense pas que ce soit la solution à mon problème vu que les composants présents sur les feuilles de l'application (comme un bouton) sont eux aussi bloqués pendant la durée de la boucle !

Ou alors je n'ai pas saisi quelque chose dans ton idée...

Bien à toi,
0
sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
17 juil. 2003 à 17:17
Oui je pense que je me suis pas tres bien exprimé.

Dans l'evenement OnTimer du TTimer tu inclus le code de ta boucle avec la gestion de l'incrementation et de l'arret de la boucle, donc pas de for, while ou repeat
N'oublie pas de configurer ton TTimer avec enabled := False; et Interval := 1;

Ensuite ton bouton geres si ton Timer.Enabled est egal à True ou False.

Voila j'espere avoir ete plus clair.

A+
Sablor

PS : Sinon essaye de voir si il y a un equivalent de DoEvents en VisualBasic pour Delphi???
0
cs_klem Messages postés 30 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 septembre 2005
18 juil. 2003 à 01:02
il suffit que tu rajoutes la ligne suivante à l'intérieur de ta boucle :
application.processmessages;
...et le tour est joué !!

bonn' prog'

-= klm =-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003
18 juil. 2003 à 11:04
Merci beaucoup... Ca marche impec ! ;-)

++,

Trash
0
Rejoignez-nous