Hello,
J'ai fait un ptit test de drag 'n drop pour insérer le nom d'un fichier depuis l'explorateur vers un Edit, et y'a un truc qu'il me manque : comment savoir sur quel Edit on lache le fichier.
J'ai 2 Edit, un pour le fichier source, un autre pour le fichier destination. Le deuxième étant enabled que lorsqu'on a un fichier source.
Pour le drag 'n drop du fichier source, pas de problème, mais pour le deuxième, comment savoir qu'on lache le fichier dans le Edit2 ?
voilà ce que j'utilise :
J'ai fait un test pour voir si le Edit1 était encore à son état d'origine :
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 procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Edit1.handle,true); DragAcceptFiles(Edit2.handle,true); Application.OnMessage := TraiteMessage; end; procedure TForm1.TraiteMessage(var Msg: TMsg; var Handled: Boolean); var NombreDeFichiers,size,i:integer; NomDuFichierStr:string; NomDuFichier:array[0..255] of char; begin if Msg.message=WM_DROPFILES then begin NombreDeFichiers:= DragQueryFile( Msg.wParam, $FFFFFFFF, NomDuFichier, sizeof(NomDuFichier));// récupération du nombre de fichiers for i:=0 to NombreDeFichiers-1 do begin size:= DragQueryFile( Msg.wParam, i, NomDuFichier, sizeof(NomDuFichier) );// récupération du nom du fichier NomDuFichierStr:=NomDuFichier; // tansformation du tableau de char en STRING If Edit1.Text='Fichier source...' then Edit1.Text:=NomDuFichierStr else Edit2.Text:=NomDuFichierStr; end; end; end;
si non, c'est qu'on a déjà un fichier source, donc on place le fichier dans le Edit2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 If Edit1.Text='Fichier source...' then Edit1.Text:=NomDuFichierStr else Edit2.Text:=NomDuFichierStr;
Seulement si on veut changer de fichier source, on ne sait plus, on est obligé de réinitialiser les Edit.
De plus si, après avoir poser le fichier source, on repose un fichier dans le Edit1, le nom s'affichera dans le Edit2 car le Edit1 est déjà rempli!!
est-ce clair?
merci,
greg
Partager