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
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
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
[meta]Drag Drop .NET Dateien Ordner[/meta]
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".