Ich möchte gerne eine Datei aus dem Windows-Explorer auf einen ListBoxEintrag verschieben. Dazu habe ich bereits folgendes gemacht:
DragAcceptFiles(ListBox.Handle, True);
und
Delphi-Quellcode:
procedure TMainForm.WMDROPFILES(var Msg: TMessage);
var Size: integer;
Filename: PChar;
begin
inherited;
if DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255) = 1 then
begin
Size := DragQueryFile(Msg.WParam, 0 , nil, 0) + 1;
Filename:= StrAlloc(Size);
DragQueryFile(Msg.WParam, 0, Filename, Size);
//Hier passiert dann etwas mit der Datei
StrDispose(Filename);
end;
DragFinish(Msg.WParam);
end;
Jetzt habe ich nur das Problem, dass wenn ich mit der Maus über der ListBox bin und die Dateien dabei habe reagiert kein Eregnis der ListBox wie z.B. MouseOver, womit ich den Eintrag über dem sich die Maus befindet markiere. Wie kann ich den ListBoxEintrag über dem sich die Maus während des Drag&Dropens befindet markieren. Und dann würde ich gerne wissen, ob ich das Drag&Drop bereits abbrechen, wenn mehr als eine Datei verschoben wird?