begin process at 2012 05 29 22:37:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Problème de timer/progressbar C++Builder


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de timer/progressbar C++Builder

mardi 13 avril 2010 à 21:55:22 | Problème de timer/progressbar C++Builder

Tom59247

Bonsoir tout le monde,

dans le cadre d'un projet, je dois réaliser une interface graphique qui devra évoluer en fonction d'information reçu par un automate.(Station de surpression, gére la demande en eau de plusieurs utilisateurs .. bref)

j'ai un soucis dans la progression d'une ProgressBar celle ci doit évoluer en fonction de la pression (demande des utilisateurs, plus il y a de demande , plus la pression montera ou inversement)

j'ai reussi a la faire évoluer mais c'est beaucoup trop long la barre ne progresse pas assez vite je souhaiterais une barre un poil plus fluide...
Je vous link mon code afin de visualiser un peu mieux mon problème

Code C/C++ :
if(Edit_Preseuil->Text.ToInt() < Edit_Pression->Text.ToInt())
                {      
                        //boucle pour augmenter la pression
                        for(int i=Edit_Preseuil->Text.ToInt();i<Edit_Pression->Text.ToInt();i++)
                        {
                                Manometre->Position = i;
                                Sleep(1);     //probleme l'avancement du progressbar n'est pas assez rapide
                        }
                        //Réaction a l'augmentation de la pression sans reel importance pour ma question
                        //juste que dans les méthodes appelés entraine un autre timer que celui qui fait progressé le manometre
                        Timer_Pompe1->Enabled=true;
                        for(int i=0;i<=4;i++)
                                IHM_Syn->TabVanne1[i].VanneUp();

                        //la progressbar(Manometre) doit réduire car "le moteur" se met en marche
                        for(int u=Edit_Pression->Text.ToInt();u>Edit_Preseuil->Text.ToInt();u--)
                        {
                                Manometre->Position = u;
                                Edit_Pression->Text = u;
                                Sleep(1);
                        }
                }


(en réalité le code doit SI la pression est plus haute que la pression de seuil, la progressbar augmente puis le moteur se met en route et enfin la progressBar doit revenir a la pression de seuil)

donc voilà le premier problème avec le manometre, le second probleme est que le code entre les 2boucles FOR (Timer_pompe et la methode Vanne_up) ne se lance qu'a la fin de ma 2em boucle FOR est là je ne comprends pas pourquoi ...

Si quelqu'un peut m'éclairer, ca m'aiderait énormement :)

Bonne soirée
mercredi 14 avril 2010 à 07:37:41 | Re : Problème de timer/progressbar C++Builder

BruNews

Administrateur CodeS-SourceS
for(int i=Edit_Preseuil->Text.ToInt();i<Edit_Pression->Text.ToInt();i++)
A chaque tour de boucle tu relis le texte de l'EDIT et tu le transformes en 1 entier, faut pas s'étonner que ce n'est pas rapide.

Ce n'est pas avec ce genre de sabir que tu apprendras à coder efficace.
i = Edit_Pression->Text.ToInt();
Manometre->Position = i - 1;
Devrait donner le meme resultat.

ciao...
BruNews, MVP VC++
mercredi 14 avril 2010 à 10:56:16 | Re : Problème de timer/progressbar C++Builder

Tom59247

Salut BruNews, merci de regarder à mon soucis,

en réalité ce n'est pas la boucle qui est trop longue car si j'enleve le sleep mon programme tourne en instantanné, c'est juste que "sleep(1)" est encore trop long car ma pression de seuil sera par exemple de 2000 et ma pression sera de 4000 ce qui fait 2000 itérations dans ma boucle.

j'ai effectué un petit test pour bien observer que ca marche
Code C/C++ :
                        for( i=Edit_Preseuil->Text.ToInt();i<Edit_Pression->Text.ToInt();i++)
                        {
                                Manometre->Position = i;
                                if(test == 10)
                                {
                                        Sleep(1);     //probleme l'avancement du progressbar n'est pas assez rapide
                                        test = 0;
                                }
                                else
                                        test ++;


dans ce cas là ma barre charge comme il faut... mais déjà que mon code fait débutant là c'est encore un niveau en dessous :/

j'aurais souhaité un moyen de faire une sorte de "sleep(1/10) ou sleep(0.1)" mais d'apres ce que j'ai constaté c'est exactement comme si je ne mettais pas de timer...
Auriez vous une alternative au probleme ? autre chose que le test que je viens de mettre :/

Merci d'avance.
vendredi 16 avril 2010 à 18:53:21 | Re : Problème de timer/progressbar C++Builder

Tom59247

Re bonjour,

personne n'a de conseils à me donner ? :/
samedi 1 mai 2010 à 19:19:06 | Re : Problème de timer/progressbar C++Builder

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Heu bin tu peux avancer plus vite que de 1 en 1 peut être.

Code C/C++ :
                        for( i=Edit_Preseuil->Text.ToInt();i<Edit_Pression->Text.ToInt();i += 10)
                        {
                                Manometre->Position = i;
                                Sleep(1);     //probleme l'avancement du progressbar n'est pas assez rapide


Et effectivement, exécuter une seule fois Edit_Pression->Text.ToInt() avant la boucle serait beaucoup plus propre, même si ça ne résout pas ton problème.


Cette discussion est classée dans : timer, text, progressbar, pression, toint


Répondre à ce message

Sujets en rapport avec ce message

Problème de "pression de touches" [ par Quiske ] Bonjour tout le monde , je suis un programmeur débutant jeune 14 - 15 ans qui a un problème :Je voudrais dire a l'ordinateur que j'appuie sur une tou ODBC Connect dialog: lacks text if api called from dll [ par mfritschi ] hi,i am writing an abstract data access framework. it enables us amongother things to access databases without being interested in theactual underlyin Comment savoir le temps que prend un instruction? [ par Samoul ] Je voudrait savoir comment calculer a l'aide d'un chronomètre ou de nimporte quel autres manière le temps qye peut prendre un instruction.Ex:Timer sta [VC++] Taille du text dans une application console [ par Cybmat ] SalutVoila je voudrai savoir comment on change la taille du text ecrit dans uneapplication console avec printf() .Merci d'avance Urgent problem de lecture de fichier [ par deamon ] J'ai besoin d'aide, je voudrais faire un héditeur hexadecimal en Visual C++. Le problem est que je n'arrive pas a afficher un fichier en héxa dans un Utilisation de Timer [ par nunette ] Je fais clignoter un bouton sur l'appel de SetTimer, mon problème: impossible de le killer pourtant je passe bien le même id à KillTimer que celui pas multiple definition de fonctions ! [ par bidules ] bonjour,lorsque je compile j'ai plein d'erreur me disant qu'il ya des multiple definitions dans mes fichiers objets : ds tou les fichier .h il y a au property page avec les activex OCX [ par stef2000 ] je souhaite integrer une combo box dans ma property page. Je souhaite l'iniatialiser avec une liste de valeurs possible pour une propriété via OnInit COULEUR DE TEXT (SVP) [ par malito ] Je n'arrive pas malgres mes recherches a mettre du text ou l'arriere plan en couleur... textcolor(...); ne marche qu'en CComment fait la class de progressbar marche comment ??? [ par Xs ] salut !!!je ne sais plus qui, mais quelqu'un a déposé une source pour la progress bar : comment s'en sert-on passke ca fait je sais pas combien de foi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,778 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales