Home » Tipps & Tricks » Dateien/Verzeichnisse » Dateioperationen » Dateien per Drag’n’Drop vom Explorer erhalten
Dateien per Drag’n’Drop vom Explorer erhalten
Manche Programme bieten die Möglichkeit, Dateien per Drag’n’Drop zu erhalten und diese dann z.B. zu öffnen. Insbesondere bei Texteditoren gibt es das häufig. Mit dem folgenden Code kann man das auch in seinen eigenen Programmen realisieren:
uses ShellApi; ... private procedure WMDROPFILES(var Msg: TMessage); message WM_DROPFILES; ... procedure TForm1.WMDROPFILES(var Msg: TMessage); var i, count, size: integer; filename: PChar; begin inherited; count := DragQueryFile(Msg.WParam, $FFFFFFFF, filename, 255); for i := 0 to count - 1 do begin size := DragQueryFile(Msg.WParam, i, nil, 0) + 1; filename := StrAlloc(size); try DragQueryFile(Msg.WParam, i, filename, size); ListBox1.Items.Add(StrPas(filename)); finally StrDispose(filename); end; end; DragFinish(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, true); end;
Mit DragAcceptFiles
wird das Formular angewiesen, Dateien überhaupt per Drag’n’Drop zu akzeptieren, d.h. es erscheint nicht mehr das Parkverbots-Schild, wenn der User eine Datei auf das Formular zieht.
Die Botschaftenmethode WMDROPFILES
kümmert sich nun darum, dass letztendlich auch etwas passiert. Zuerst wird die Anzahl der Dateien ermittelt, und dann für jede einzeln der Dateiname in eine Listbox eingetragen.