Hallo xaromz.
Als Allererstes ein dickes Dankeschön! Die Komponente funktioniert (fast) wunderbar.
Für meine Zwecke sind insbesondere die Ereignisse "DragEnter" und "DragLeave" geeignet. Umgangssprachlich ist es zwar richtig, dass ich beim "DragOver" über z. B. Panel1 das ListView1 zeigen will. Programmiertechnisch sieht das anders aus:
Genaugenommen soll, wie oben schon angedeutet, "DragEnter" ermittelt werden. Ab dann läuft eine Verzögerung von ca. 0,5 bis 1 Sekunde an. Wird das Panel1 innerhalb dieser Verzögerung wieder verlassen (= "DragLeave"), so wird das Zeigen des ListView1 NICHT ausgeführt.
Insofern ist deine Komponente genau das Richtige für meine Zwecke!
2 Probleme bestehen noch:
Erstens:
Wie kann ich mehrere Controls an "ShellDroper" zuweisen? So dass z. B. Panel1 .. Panelx überwacht werden.
Zweitens:
Mein Test-Programm enthält die Form1, darauf sind zwei Panels (Panel1 und Panel2). Panel1 habe ich der Komponente ("ShellDropper1") zur Designtime zugewiesen. Während der Ausführung des Test-Programms funktioniert alles ( "DragEnter", "DragOver" und "DragLeave"). Jedoch beim Beenden des Test-Programms wird folgende Exeption ausgelöst:
----------------------------------------
Debugger Exception Notification
----------------------------------------
Project Project1.exe raised exception class EInvalidOperation with message 'Control 'Panel1' has no parent window'.
Danach habe ich im Code deiner Komponente fogendes hinzugefügt:
Delphi-Quellcode:
...
initialization
OleInitialize(nil);
finalization
OleUninitialize; // <-- hinzugefügt (Ist das richtig/notwendig?)
end.
Leider bleibt die oben beschriebene Exeption.
Wie kann das behoben werden?
Nochmal dickes Lob für die Komponente! Ich hoffe, dass wir zumindest das Problem mit der Exeption lösen können.
Gruß,
Guido.