Hier mal eine kleine Bestandsaufnahme in Bezug auf Drag & Drop Interoperabilität zwischen verschiedenen Applikationen.
Hier geht es also nicht um die diversen Drag & Drop Properties der Lazarus Komponenten, welche nur Applikations-interne Verscheibereien unterstützen.
Ist hier bei Komponenten und Packages, weil ich eine portable Lösung für Drag & Drop in Lazarus für erstrebenswert erachte (oder gibt es die schon?).
Bzgl. der Umstände, die ich seitens Lazarus als buggee sehe, bitte ich um Feedback, bevor ich diese im Bugtracker eintrage.
Testumgebungen:
(a) Kubuntu 10.04 32Bit
Lazarus 0.9.28.2 & FPC 2.4.0
Firefox 3.6.3
OOo 3.2.0
Gimp 2.6
Einfache mit Lazarus erstellte App (Form mit AllowDropFiles und OnDropFiles sowie 1x TEdit und 1x TMemo)
(B) Windows XP Home SP3
Lazarus 0.9.28 & FPC 2.2.4
Firefox 3.6.2
OOo 3.2.1
Einfache mit Lazarus erstellte App wie oben beschrieben
Drag'n'Drop Delphi Demo von Anders Melander
1. Drag & Drop von Dateien
1.1 Dolphin / Windows Explorer als DragSource
1.1.1 Dolphin / Windows Explorer nach irgendwo hin
-> funktioniert eigentlich überall halbwegs problemlos
1.1.2 Dolphin / Windows Explorer nach Lazarus App TEdit oder TMemo
-> Kubuntu: Im TMemo erscheint die URI als String.
Ausserdem wird aber auch in der App OnDropFiles gerufen, auch wenn AllowDropFiles=False.
Ist IMHO ein Bug. Wenn ein Child Control den Drop Event bereits ausgewertet hat,
dann sollte der Parent das nicht nochmal tun.
-> WinXP: Verhaelt sich wie erwartet. Dateien kommen via OnDropFiles an.
2. Drag & Drop von Grafiken
2.1 Firefox als DragSource
Hier werden letztlich auch nur URI's uebergeben und das DropTarget hat sich um alles weitere zu kümmern.
Firefox hat auch eine hübsche Preview Bitmap wärend des draggens.
2.1.1 Firefox nach Dolphin / Windows Explorer
-> Dolphin (bzw. Windows Explorer) kopiert die Bilddatei vom HTTP Server
2.1.2 Firefox nach Gimp
-> Kubuntu: Gimp läd die Bilddatei vom HTTP Server (und fügt sie als neue Ebene ein)
2.1.3 Firefox nach Lazarus TMemo
-> Kubuntu: Die URI wird im TMemo als String eingefügt.
-> WinXP: Drop nicht erlaubt.
2.2 OOo als DragSource
OpenOffice verzichtet beim draggen auf Preview-Bitmaps
2.2.1 OOo nach Gimp
-> Kubuntu: Hier werden offenbar tatsächlich Grafikdaten per Drag & Drop kopiert.
2.2.2 OOo nach Drag'n'Drop Demo
-> WinXP: Funktioniert, Rückrichtung ebenfalls.
3. Drag & Drop von Text
3.1 Firefox als DragSource
3.1.1 Firefox nach Dolphin
-> Kubuntu: Lt. Mauszeiger erlaubt, wird beim Drop aber abgewiesen.
-> WinXP: Schon der Mauszeiger sagt: "Das geht hier nicht"
3.1.2 Firefox nach Gimp
-> Kubuntu: Gimp versucht eine Datei zu öffnen und verwendet den übergebenen Text als Dateinamen (was dann zu einer Fehlermeldung führt).
3.1.3 Firefox nach Kate/...
-> Kubuntu: Text wird eingefügt (ohne Attribute und ohne Html-Tags)
-> WinXP: Weder Notepad noch CodeWright wollten den Text entgegen nehmen.
3.1.4 Firefox nach OOo
-> Kubuntu: Text wird eingefügt, Attribute sind als Html-Tags zu sehen.
-> WinXP: Text wird inkl. Attribute eingefügt.
3.1.5 Firefox nach Lazarus App TEdit
-> Kubuntu: Text kommt korrekt im Edit-Control an.
Aber Bug wie schon unter 1.1.2 beschrieben wird aber zusätzlich auch TForm.OnDropFiles aufgerufen und die eigene App wird versuchen den Text als Dateinamen zu interpretieren.
-> WinXP: Geht leider nicht.
3.1.6 Firefox nach Lazarus App TForm
-> Kubuntu: Beim Draggen siehts noch 'erlaubt' aus, beim Drop wird es dann aber korrekterweise abgelehnt.
-> WinXP: Wird korrekterweise abgelehnt.
3.1.6 Firefox nach Lazarus IDE Editor
-> Kubuntu: Beim Draggen siehts noch gut aus, beim Drop wird es dann aber leider abgelehnt.
-> WinXP: Geht leider nicht.
3.2 Kate als DragSource
3.2.1 Kate nach Dolphin
-> Kubuntu: Wird korrekt abgelehnt
3.2.2 Kate nach Gimp
-> Kubuntu: Verhalten wie bei 3.1.2
3.2.3 Kate nach Lazarus App TForm
-> Kubuntu: Wird korrekt abgelehnt
3.2.5 Kate nach Lazarus App TEdit
-> IMHO Buggee (siehe 1.1.2, 3.1.5)
3.2.5 Kate nach Lazarus IDE Editor
-> Kubuntu: Schon der Mauszeiger sagt (zu meinem Unverständnis): "Das geht hier nicht".
3.3 Lazarus IDE als DragSource
3.3.1 Lazarus IDE nach Kate oder sonst wo hin
-> Kubuntu: Geht nicht. Der markierte Text ist nicht aus dem Editorfenster herausschiebbar.
-> WinXP: Dito.
3.4 Lazarus App als DragSource
3.4.1 Lazarus App TEdit oder TMemo nach irgendwo hin
-> Kubuntu: Funktioniert unter Kubuntu inkl. Preview-Bitmap.
-> WinXP: Unter Windows geht's nicht.
4. Drag & Drop von Audiodata und sonstigen Spezialdaten
Habe ich nicht getestet. Weis auch gar nicht, ob die Betriebssysteme sowas überhaupt unterstützen.
5. Eigene Lazarus App als DragSource
-> Für Windows hat ja der Anders Melander diese IMHO wirklich gute Component Suite implementiert - zumindest für Delphi.
Hab' selbst noch nicht versucht die mit Lazarus zu kompilieren, da ich eher an portablen Lösungen interessier bin.
Ansonsten habe ich für Lazarus nichts entsprechendes gefunden.
Weiss jemand evtl. wo man über das Drag&Drop API von GTK und/oder KDE nachlesen kann?
Drag & Drop zwischen Applikationen
Re: Drag & Drop zwischen Applikationen
Dieser Teilaspekt wird erst mal in http://www.lazarusforum.de/viewtopic.php?f=16&t=4010" onclick="window.open(this.href);return false; weiter geführt.Eigene Lazarus App als DragSource
Im Source vom Double Commander habe ich schon recht viel versprechende Ansätze gefunden.