Dateien (und Ordner) per Drag 'n Drop empfangen
Um Dateien (und Ordner) per Drag 'n Drop aus dem Explorer auf eine Komponente des Programmes zu Empfangen, sind folgende Schritte notwendig:
(1) Bei der entsprechenden Komponente muss "AllowDrop" auf "true" gesetzt werden
(2) Im DragEnter-Event der Komponente ist folgender Code unterzubringen (hier am Beispiel einer Listview):
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 
 | procedure TMainForm.fileList_DragEnter(sender: System.Object; e: System.Windows.Forms.DragEventArgs);begin
 if (e.Data.GetDataPresent(DataFormats.FileDrop)) then     e.Effect := DragDropEffects.Copy   else
 e.Effect := DragDropEffects.None;
 end;
 | 
		
	  
(3) Um nun an die Dateien zu kommen, platziert man noch folgenden Code im OnDragDrop-Event (auch am Beispiel einer ListView):
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 
 | procedure TMainForm.fileList_DragDrop(sender: System.Object; e: System.Windows.Forms.DragEventArgs);type strArr = Array Of String; var files : strArr;
 i : Integer;
 begin
 files := strArr(e.Data.GetData(DataFormats.FileDrop));
 for i:=0 to High(files) do
 begin
 
 if (System.IO.FileAttributes.Directory
 and System.IO.File.GetAttributes(files[i])) = System.IO.FileAttributes.Directory
 then MessageBox.Show('Verzeichnis: '+files[i])
 else MessageBox.Show('Datei: '+files[i]);
 end;
 end;
 | 
		
	  
So fertig. Anstatt der MessageBoxes kann man natürlich nun mit den Ordner und Dateien machen, was man will.
Moderiert von  jasocul: Beitrag geprüft am 05.05.2006
jasocul: Beitrag geprüft am 05.05.2006
[meta]Drag Drop .NET Dateien Ordner[/meta]
 
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".