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:
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(); |