Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#1

Drag&Drop innerhalb einer Delphi-Komponente UND von/nach Außen

  Alt 30. Aug 2022, 10:01
Moin,

wie macht man am Besten Drag&Drop, innerhalb von einer Delphi-Komponente und von, sowie nach Außen?
(aktuell noch kompatibel zu Delphi XE, aber auch schon Delphi 11 und notalls muß es nicht mehr kompatibel sein ... sooo eilig ist es jetzt noch nicht)



Innerhalb von Delphi-Komponenten nutzt Delphi ja seinen eigenen Mist (TDragObject mit OnStartDrag/OnDragDrop).
-> Das wurde/wird hier seit Jahrzehnten genutzt, um Items (Dokumente) im einem Tree zu verschieben.

Dann wollte jemand Drag&Drop von außen (Explorer, Outlook Express und Thunderbird), also auf WM_DROPFILES reagiert.
-> Funktionierte problemlos.

Danach kam dann MSOffice-Outlook dazu, wo WM_DROPFILES nur bedingt geht,
also auf IDropTarget umgebaut ... das Selbsmachen nach 'ner Weile aufgegeben und aktuell DropMaster verwendet.
-> Ging auch.

Dann ging es los und jemand wollte Dokumente nicht nur rein, sondern auch raus.
-> Nur ging das nicht gleichzeitig, also entweder im Delphi gestartet oder nach außen.
-> Da das alte Umsortieren weiter funktionieren mußte, starte ich das Externe im OnMouseDown eines Buttons (Dokument im Baum auswählen und dann danaben einen "Button" nehmen und rausziehen).



Nur langsam (nach über 5 Jahren) fangen neue Kunden nun an rumzumosern, dass es ihnen so nicht wirklich gefällt, bzw. sie es nicht verstehen.
Delphi selber bietet natürlich nichts (außer der Drop-Komponente im FMX, was so in der VCL eh keine Lösung wäre, bzw. sie wäre ja genauso wie jetzt, mit dem Button, nur mit größerer Platzverschwendung, wenn es das in der VCL gäbe)



Beides gleichzeitig zu starten geht wirklich nicht? oder hatten wir damals nur was falsch gemacht?

Ansonsten bliebe doch bestimmt nun noch die Lösung im Tree auf IDropTarget/IDropSource/DoDragDrop umzustellen, auch für das Verschieben innerhalb der Delphi-Komponente.
Nur was ich vor Jahren da mal an Beispielen sah, ging immer nur von einer Source (eine Komponente) zu einem "anderen" Target (nicht die gleiche Komponente, an einem anderen X:Y).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Aug 2022 um 13:55 Uhr)
  Mit Zitat antworten Zitat