bonjour,
Dans mon application, le fait d'appuyer sur un bouton (TButton) cela déclenche l'ouverture d'une fenêtre modale.
Dans le oncreate de cette fenêtre j'effectue un traitement qui occupe le processeur pendant quelques secondes avant que la fenêtre ne s'affiche.
Jusque là pas de problème.
Ensuite, j'ai voulu afficher une barre de progression et c'est là que le problème apparait car si on clique deux fois de suite sur le bouton, alors les deux évènements sont pris en compte avant que la fenêtre ne s'affiche et lorsque la première fenêtre modale se ferme, l'autre fenêtre s'ouvre !!!
Voilà ce que j'ai fait:
Pour afficher une barre de progression, J'ai créé une form dans laquelle je n'ai que la barre de progression.
Au début du traitement qui prend du temps , je créé la fenêtre comme ceci:
Je ne veux pas mettre la barre de progression dans la fenêtre modale car je souhaiterai utiliser cette fenêtre dans d'autres cas aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ProgressForm := TProgressForm.Create(AOwner,'Loading'); ProgressForm.Show; ProgressForm.ProgressBar.Max:=cnt; for i:=1 to cnt do Begin ProgressForm.ProgressBar.position:=i; (.. ici mon traitement qui prend du temps...) end; ProgressForm.free;
Peux-t-on bloquer les messages windows pendant le tratitement ? Ou existe-t-il une autre méthode ?
Merci pour votre aide.
Franck
Partager