Autor Beitrag
worm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 135


D6 Prof
BeitragVerfasst: Mi 22.03.06 20:56 
Eine Ergänzung zum existierenden Topic "...Dateien IN andere Applikationen ziehen?"

Die vorgestellte Lösung mit der Komponente von Angus Johnson ist für die meisten Zwecke sicherlich ausreichend, aber ich brauchte weiteres Feedback über den Ausgang der Drag&Drop-Operation (und außerdem ist die Komponente stellenweise recht unsauber geschrieben).
Also habe ich mich an eine eigene Lösung gemacht, mehr basierend auf der MSDN-Dokumentation als der existierenden Komponente. Es sind dabei mehrere Versionen herausgekommen.
Im ersten Ansatz habe ich wie bei der Komponente von Angus ein IDataObject selbst implementiert, dass als Datenformat nur CF_HDROP zur Verfügung stellt, aber bestimmte zusätzliche Datenformate verarbeiten kann, die vom IDropTarget als Feedback über die Aktion genutzt werden (version1).
Mittendrin bin ich dann darauf gestoßen, dass ich ein IDataObject auch direkt von der Shell für eine beliebige Menge an Dateien bekommen kann. Daraufhin habe ich erst einmal IDataObject und IDropSource in zwei Objekte aufgeteilt (version2) und dann eine weitere Klasse geschrieben, mittels der man ein IDataObject der Shell erzeugen lassen kann (version3).

Im Anhang finden sich alle drei Versionen samt Demos und einer Readme. Der Code ist einigermaßen dokumentiert, aber Fragen beantworte ich auch gerne. Viel Spaß damit!


Delphi-ShellDragDrop.zip  (31.4 KB) Download (Rev 0)
 (650x, 650x gesamt)
Beschreibung: Die beschriebenen Units, um einer Delphi-Applikation Drag&Drop-Support hinzuzufügen, beispielsweise für Dateien oder Textschnipsel.
_________________
In the beginning, the universe was created. This has made a lot of people very angry, and is generally considered to have been a bad move.


Zuletzt bearbeitet von worm am Mi 22.03.06 21:26, insgesamt 1-mal bearbeitet