IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

ProgressBar qui n'avance que si on ne touche plus a la souris


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Par défaut ProgressBar qui n'avance que si on ne touche plus a la souris
    Bonsoir a tous,

    J'ai créé un petit programme qui déplace automatiquement une liste de fichiers d'un repertoire vers un autre. Pour savoir ou on en est dans la progression, j'y ai ajouté une petite progressbar que j'incremente a chaque nouveau fichier traité. Tout fonctionne parfaitement tant que je ne bouge pas la souris et que je ne clic pas. Mais dès que je clic ailleurs, la barre de progression ne bouge plus et l'intitulé de la fenetre contient: "ne repond pas".

    voici le code de la methode incriminée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    	pnlImg->Visible = true;
    	pbCopyFile->Position = 0;
    	mainForm->Refresh();
    	int pas = 100 / getNbSelected(lstFilmsRecup);
    	for(int i=lstFilmsRecup->Items->Count-1; i>=0; i--)
    	{
    		if( lstFilmsRecup->Checked[i] )
    		{
    			pbCopyFile->Position += pas;
    			AnsiString file = lstFilmsRecup->Items->Strings[i].SubString(lstFilmsRecup->Items->Strings[i].LastDelimiter("\\")+1,lstFilmsRecup->Items->Strings[i].Length());
     
    			if( !CopyFile(lstFilmsRecup->Items->Strings[i].c_str(),(edtBrowseDest->Text+"\\"+file).c_str(),true))
    				MessageDlg("Problème à la copie du fichier: "+lstFilmsRecup->Items->Strings[i], mtWarning, TMsgDlgButtons() << mbOK, 0);
    			else
    			{
    				int j = findFile((AnsiString) lstFilmsRecup->Items->Strings[i]);
    				if(j!=-1)
    				{
    					_vLstRecup[j].users += ";"+edtPseudo->Text;
    					lstFilmsRecup->Items->Delete(i);
    				}
    				else
    				{
    					Fichier f;
    					f.fichier = lstFilmsRecup->Items->Strings[i];
    					f.users = edtPseudo->Text;
    					_vLstRecup.push_back(f);
    					lstFilmsRecup->Items->Delete(i);
    				}
    			}
    		}
    		Application->ProcessMessages();
    	}
    	pnlImg->Visible = false;
    	saveListeFichiers();
     
    	videOngletSuppr();

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Par défaut
    petit up svp.

    N'avez vous pas compris mon problème, ne savez vous pas répondre a mon problème?

    Pleaaase Help ^^

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello,

    Essaye de mettre un Update() après le pbCopyFile->Position += pas;

    Sinon, combien de temps prennent le CopyFile et le findFile ? Ce sont sûrement eux qui bloquent l'appli et empêchent le rafraichissement de ta fenêtre.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Tu peux aussi mettre le "Application->ProcessMessages()" juste après avoir changé la position dans ta progressbar .

    Sinon totoche a raison: peut-être sont-ce tes fonctions "CopyFiles" et/ou "FindFile" qui "bloquent" ton application.

    Si jamais, j'avais fait un petit code qui permet de calculer le temps que passe une application dans différentes tâche. Il est dans les sources
    Programme de mesure de temps d'exécution de portions de code (il y a un exemple dans le zip)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Par défaut
    Merci bcp. Je vais essayer et si ca ne fonctionne pas, je reposterais :p.

Discussions similaires

  1. [MySQL] Order by qui marche pas, Que faire ?
    Par mulbek dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 06/01/2006, 14h48
  2. JVGradientProgressbar : ProgressBar qui tourne en continue
    Par kivoch dans le forum Composants VCL
    Réponses: 9
    Dernier message: 11/12/2005, 12h25
  3. [Recherche avancée] que les resolus
    Par ould dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 10
    Dernier message: 13/09/2005, 20h43
  4. [Eclipse 3.0.1] Image qui n'affiche que son path
    Par thehpman dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 16/03/2005, 11h28
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo