Hallo zusammen,
habe ein Problem per Drag&Drop Dateien vom Explorer in meine Anwendung zu schaufeln. Ich würde gerne nur die Listbox befüllen auf die auch tatsächlich gedropt wurde, nur leider weiß ich nicht wie genau ich das realisieren soll.
Ich habe es bis jetzt so probiert und auch im Internet nachgeschaut -> Kein Erfolg:
Delphi-Quellcode:
const DF_NUMBEROFFILES = $FFFFFFFF;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(ListBox1.Handle, true);
DragAcceptFiles(ListBox2.Handle, true);
end;
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
ListBox2.Enabled := false;
end;
procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
ListBox1.Enabled := false;
end;
procedure TForm1.WMDROPFILES(var Msg: TMessage);
var i, anzahl, size: Integer;
Dateiname: PChar;
begin
inherited;
anzahl := DragQueryFile(Msg.WParam, DF_NUMBEROFFILES, Dateiname, 255);
for i := 0 to (anzahl - 1) do
begin
size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
Dateiname := StrAlloc(size);
DragQueryFile(Msg.WParam, i, Dateiname, size);
if ListBox1.Enabled then
Listbox1.Items.Add(StrPas(Dateiname))
else
ListBox2.Items.Add(StrPas(Dateiname));
StrDispose(Dateiname);
end;
DragFinish(Msg.WParam);
ListBox1.Enabled := true;
ListBox2.Enabled := true;
end;
Das enablen der Listboxen wollte ich zur Unterscheidung verwenden. Es muss doch eine logische Lösung geben, nur sehe ich die irgendwie nicht. Einer eine Idee?
Gruß
hungrycoder