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 :
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;
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
If Edit1.Text='Fichier source...'
       then Edit1.Text:=NomDuFichierStr
       else Edit2.Text:=NomDuFichierStr;
si non, c'est qu'on a déjà un fichier source, donc on place le fichier dans le Edit2.

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