ProgressBar et blocage

cs_ryadus Messages postés 64 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 21 octobre 2008 - 7 mai 2003 à 18:00
syphon22 Messages postés 11 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 8 février 2010 - 20 janv. 2010 à 13:54
Salut;
J'ai fait un projet Delphi, mais il est un peu lent à l'execution; ie: lorsque je click sur un bouton ya tout un algorithme dériére et plein de calcul alors ça prend du temps, alors je me suis dit est-ce que c possible de faire une progressbar?; mais ma question est:
est-ce que le progressbar ne va pas se bloquer car l'ordinateur est en train de réfléchir :) lorsque je click sur le bouton ???
merci;,

4 réponses

cs_Bestiol Messages postés 833 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 3 novembre 2005 1
8 mai 2003 à 00:36
Oui, c'est fort possible que ta barre se bloque...
Si le temps de calcul de ton algorithme, et son utilisation du processeur est "acceptable", tu peux essayer de placer judicieusement des "Application.ProcessMessages", avant et après les longues boucles, per exemple, ou un dans chaque itération d'une boucle... Avec la mise à jour de la ProgressBar derrière, ça peut suffire !

Si ce n'est pas le cas, il faut alors que tu utilises un thread... Je pense que c'est la solution la plus simple à mettre en oeuvre, après celle d'au-dessus... Il suffit de créer ton thread, avec comme fonction ton algorithme, et le tour est joué : ton application devienra bien plus fluide !

Reste encore une méthode plus compliquée, il me semble, que je n'ai encore jamais essayée : c'est un truc genre "Fenêtre d'indication d'avancement"... C'est, si j'ai bien compris le principe, une fenêtre ouverte à part, avec une ProgressBar, un label, un bouton "Annuler", et des fonctions "spéciales" bien définies, qui permettent au créateur de la fiche de l'actualiser régulièrement...
Je ne peux pas t'en dire beaucoup plus, malheureusement... Par contre, si tu as le livre d'Olivier Dahan et de Paul Toth, "Delphi 7 Studio", tu trouveras un exemple de mise en oeuvre de cette méthode !

Bonne prog' !
[mailto:bestiol@cario.fr Bestiol.]
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 mai 2003 à 08:46
Et si tu n'as pas le livre cité par Bestiol, tu peux télécharger le document "Plan qualité" sur le site d'O. DAHAN en format PDF (une vingtaine de pages) sur le site e-naxos qui a été repris dans le livre. Tu trouveras d'ailleurs d'autres documents ou codes sources tous plus intéressants les uns que les autres et de très haute qualité.
May Delphi be with you
0
cs_netboydz Messages postés 17 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 24 février 2009
21 déc. 2008 à 11:02
salut

ma fenetre de Progressbar marche bien si la fençetre de l'appli garde le focus.

Par contre si on la "Minimize" puis "Maximize" la fenêtre, la
progressbar est figé et affiche du blanc jusqu'a ce que la boucle
soit executé.

J'ai essayé le progressbar.Refresh sur l'evenement focus de ma form mais ca ne marche pas .


Si vous avez une idée merci d'avance!!
0
syphon22 Messages postés 11 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 8 février 2010
20 janv. 2010 à 13:54
Bonjour à tous,

j'ai un problème similaire.

Dans ma fenêtre principale, j'ai un bouton qui va exécuter un thread. Durant l'exécution du thread, j'aimerais afficher une nouvelle fenêtre (ufmProgression) contenant une ProgressBar et un boutton Arrêter pour arrêter le Thread.

Actuellement, je ne fais qu'afficher la fenetre ufmProgression à l'exécution :

fmProgression.Show;


Comment faire pour rafraichir cette ProgressBar car elle se bloque ?
0
Rejoignez-nous