Bonjour.
J'utilise un DriveComboBox associe a un FileListBox.
Est ce qu'il est possible de copier une selection de plusieurs fichiers.
Y a t'il une methode a respecter pour ce type de copie.
Bonjour.
J'utilise un DriveComboBox associe a un FileListBox.
Est ce qu'il est possible de copier une selection de plusieurs fichiers.
Y a t'il une methode a respecter pour ce type de copie.
J'ai fait une recherche, j'ai vu en delphi la posibilite de stoker les chemins des fichiers a copiers dans une ListBox,
comment mettre en oeuvre une telle procedure?
Bonsoir blondelle !
Un simple truc comme :
afin de stocker la selection dans un TStringList et d'utiliser ces infos après dans :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 TStringList *plist = new TStringList(); for (int i = 0; i < FileListBox1->Items->Count; i ++) { if (FileListBox1->Selected[i] == true) { plist->Add(FileListBox1->Items->Strings[i]); } }
(un API qui copie....je jubile en faisant des rimes débiles) ne suffirait pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CopyFile (....)
@ +![]()
Salut,
J'ai oublié deux choses en fait :
. si tu utilises un DirectoryListBox, il faut écrire ceci :
. a priori, tu utilises un DriveComboBox, mais comment fais tu pour y associer un FileListBox ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 plist->Add(DirectoryListBox1->Directory + AnsiString("\\") + FileListBox1->Items->Strings[i]);
@ +![]()
bonsoir Sunchaser.
J'ai tellement bricolé pour arriver a faire fonctionner ces quelques lignes de code je crois que je vais changer de passion.
bon treve de plaisanterie.
DirectoryBox est lié par Events a FileListBox
DriveComboBox est lié par Events a DirectoryListBox
Je peu t'envoyer une copie du fichier il n'y a presque pas de code c'est surprenant comme quatres lignes peuvent nous pourrir la vie.
la seule chose qui ne ma pas pose probleme et dont je n'ai pas besoin pour l'instant c'est le changement de lecteur
Mon programme se compose d'une Form 2 directorybox 2 filelistbox une partie source une partie destination ca fonctionne pour copier un seul fichier, j'aimerais le faire pour plusieurs fichiers, apres on verra pour un repertoire et on va s'arreter la.
comment tu recupere tes fichiers a copier dans la ListeBox je n'ai pas verifie s'il y a une propriete "count" le NB de fichier contenu est aleatoire, une boucle pour la copie devrait suffire, je vais tester.
Merci en tout cas pour ta reponse.
Juste une question qui n'est pas forcement idiote si le chemin qui va etre copie dans la cellule du StringGrid est tres longue vat elle etre tronquée.
StringGrid ?Envoyé par blondelle
De mon côté je parlais d'un TStringList....
Encore une question a la con y a t'il un composant pour un TStringList je ne vois rien dans la liste des composants BCB .
Que je sache, non, TStringList n'est pas un composant 'visuel'....
Ah! ca me rassure je vais pouvoir me coucher tranquille et reprendre tout cela demain a tete reposee.
Merci pour tes reponses Sunchaser.
Je posterais la solution que saurais trouvée.
Dis moi si tu a essaye le TDriveComboBox.
A +
J'ai resolu le probleme en utilisant un TListBox (avec un TStringList je travaillais en aveugle), la pour mes essais j'ai vu ce qui se passait, et ca marche pour un ou plusieurs fichiers, si on laisse la propriete visible du ListBox on peu voir la liste des fichiers dans le tampon de copie.
Le code:
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
38
39
40
41
42
43
44
45
46
47
48
49
50 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "dir.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Quitter1Click(TObject *Sender) { Application->Terminate(); } //--------------------------------------------------------------------------- void __fastcall TForm1::DriveComboBox1Change(TObject *Sender) { DirectoryListBox1->Drive = DriveComboBox1->Drive; FileListBox1->Directory = DirectoryListBox1->Directory; } //--------------------------------------------------------------------------- void __fastcall TForm1::FileListBox1Click(TObject *Sender) { source = FileListBox1->FileName; ListBox1->Items->Add(source); } //--------------------------------------------------------------------------- void __fastcall TForm1::FileListBox2Enter(TObject *Sender) { for (int i = ListBox1->Items->Count-1; i>=0; i--) { source = ListBox1->Items->Strings[i]; nom_a_copier = ExtractFileName(source); chemin = DirectoryListBox2->Directory; chemin = chemin + "\\" + nom_a_copier; CopyFile(source.c_str(), chemin.c_str(), true); chemin = ""; ListBox1->Items->Delete(i); } // on rafraichis le FileListBox2 FileListBox2->Update(); } //---------------------------------------------------------------------------
J'ai fais une petite modif
le code:
Cette variable n'est appelee qu'une seule fois
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 void __fastcall TForm1::FileListBox2Enter(TObject *Sender) { premier_chemin = DirectoryListBox2->Directory; for (int i = ListBox1->Items->Count-1; i>=0; i--) { source = ListBox1->Items->Strings[i]; nom_a_copier = ExtractFileName(source); chemin = premier_chemin + "\\" + nom_a_copier; CopyFile(source.c_str(), chemin.c_str(), true); chemin = ""; ListBox1->Items->Delete(i); } // on rafraichit le FileListBox2 FileListBox2->Update(); }
Je ne vois rien d'autre a modifier je met un petit resolu
Partager