![]() |
Dateien per Drag-and-Drop in ListBox einfügen
Hi,
ich benötige folgende Funktion: Ich habe eine ListBox und möchte, dass man per Drag-and-Drop Dateien aus dem Explorer darauf ziehen kann. Dann sollen die Dateien in die ListBox eingetragen werden. Ich habe schon nach Drag-and-Drop gesucht, die gefundenen Beiträge haben mir jedoch nicht so recht weitergeholfen. Gruß Ben |
Re: Dateien per Drag-and-Drop in ListBox einfügen
du musst mit der Api-Funktion DragAcceptFiles (Shellapi) das droppen von Dateien erlauben. Anschließénd musst du die Message wm_dropfiles auswerten. Der Funktionsname als auch die Message sollten dir bei der Suche helfen.
|
Re: Dateien per Drag-and-Drop in ListBox einfügen
Hi,
ich denke dieser Code sollte dir weiterhelfen:
Delphi-Quellcode:
Du benötigst außerdem noch die ShellAPI in der Uses Klausel und eine ListBox auf deinem Formular :wink:
private
procedure WMDROPFILES(var Msg: TMessage); Message WM_DROPFILES; procedure TForm1.WMDROPFILES(var Msg: TMessage); var i, Counts, Size: Integer; PCharFileName: PChar; begin inherited; PCharFileName:=nil; Counts:=DragQueryFile(Msg.WParam, $FFFFFFFF, PCharFileName, 255); for i:=0 to Counts - 1 do begin Size:=DragQueryFile(Msg.WParam, i, nil, 0) + 1; PCharFileName:=StrAlloc(Size); DragQueryFile(Msg.WParam, i, PCharFileName, Size); ListBox1.Items.Add(String(PCharFileName)); StrDispose(PCharFileName); end; DragFinish(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(ListBox1.Handle, True); end; Gruß Mazel [edit=Phoenix]Dem Cache auf die Sprünge geholfen (Syntax Highlighting) Mfg, Phoenix[/edit] |
Re: Dateien per Drag-and-Drop in ListBox einfügen
Danke, funst prima.
:cheers: Wie kann ich verhindern, dass man auch Verzeichnisse eingefügt werden? Es sollen nur Dateien sein! Gruß Ben |
Re: Dateien per Drag-and-Drop in ListBox einfügen
das geht gar nicht zu verhindern. Du musst in der Messageroutine einfach prüfen ob es sich um ein Verzeichnis handelt.
Könnte eventuell jemand erklären warum das funktioniert? ich hätte gedacht das die Message gar nicht beim Form ankommt sondern direkt bei der Listbox. Ich bin also verwundert das die WM_DROPFILES message vom Form verarbeitet wird obwohl die Listbox ja das Droppen von Files erlaubt und auch die Messageroutine der Listbox doch eigentlich diese Message bekommt. |
Re: Dateien per Drag-and-Drop in ListBox einfügen
Danke.
Das ist mir schon klar, aber wie prüfe ich, ob es sich dabei um einen Ordner oder um eine Datei handelt? Ben |
Re: Dateien per Drag-and-Drop in ListBox einfügen
Wie kann ich prüfen, ob es sich bei einem Pfad um eine Datei oder ein Verzeichnis handelt?
Gruß Ben |
Re: Dateien per Drag-and-Drop in ListBox einfügen
Um zu überprüfen ob es sich um ein Verzeichnis handelt kannst du folgenden Code in der WMDROPFILES verwenden:
Delphi-Quellcode:
Gruß
procedure TForm1.WMDROPFILES(var Msg: TMessage);
var i, Counts, Size: Integer; PCharFileName: PChar; begin inherited; PCharFileName:=nil; Counts:=DragQueryFile(Msg.WParam, $FFFFFFFF, PCharFileName, 255); for i:=0 to Counts - 1 do begin Size:=DragQueryFile(Msg.WParam, i, nil, 0) + 1; PCharFileName:=StrAlloc(Size); DragQueryFile(Msg.WParam, i, PCharFileName, Size); { Funktion die prüft, ob es sich um ein Verzeichnis handelt} If FileGetAttr(String(PCharFileName)) <> faDirectory then ListBox1.Items.Add(String(PCharFileName)); StrDispose(PCharFileName); end; DragFinish(Msg.WParam); end; Mazel [edit=sakura] Cache-Refresh. Mfg, sakura[/edit] |
Re: Dateien per Drag-and-Drop in ListBox einfügen
Danke
Kann man bei einer ListBox irgendwie horizontal scrollen? Ben |
Re: Dateien per Drag-and-Drop in ListBox einfügen
Hi,
ja man kan sich eine horizonalte ScrollBar einbauen. Füge den Code in Form-Create ein und dann sollte es gehen:
Delphi-Quellcode:
Gruß
SendMessage(Listbox1.Handle, LB_SETHORIZONTALEXTENT, 140, 0);
{ 140 steht für den Wert wie weit gescrollt werden soll } Mazel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz