Registriert seit: 17. Jul 2005
877 Beiträge
Delphi 11 Alexandria
|
AW: Drag&Drop innerhalb eines VirtualTree und in den Explorer
31. Dez 2021, 08:16
Sowas dachte ich zuerst auch, aber die Sache mit dem Explorer ist ja anders.
Erstens ist der Explorer eine Anwendung, die natürlich selbst entscheiden kann, was sie mit den angebotenen Dateien machen möchte (d.h. je nach Userwunsch bzw. Modifier-Taste). Das kann ich innerhalb meiner Anwendung ja auch: Fange ich an zu draggen, und drücke währenddessen mal Shift und mal nicht, erscheint als Drag-Hint über meiner Zielkategorie ein "Verschieben" oder "Kopieren", bzw. kann ich im DragOver den DragEffect anpassen. Wenn dieser DragEffect dann zu einem der "AllowedEffects" passt, funktioniert der Drop - sonst nicht.
Ebenso könnte ich anhand der enthaltenen Dateien die eine oder andere Aktion vorschlagen (das macht schätze ich der Explorer bei der Standard-Aktion: Wenn Quell- und Ziel-Laufwerk gleich sind verschieben als Standard, sonst kopieren). Das mache ich bisher nicht, sollte aber möglich sein.
Der Punkt ist aber: der User kann im Explorer ja immer beides, weil der Explorer beim Start des Vorgangs dem Konstrukt mitgibt, dass man kopieren/verschieben/wasauchimmer darf. Das Ziel (oft wieder der Explorer, aber ein anderes Fenster) darf dann entscheiden, welche Aktion tatsächlich ausgeführt werden soll.
Und diese Auswahlmöglichkeit möchte ich "dynamisch" anpassen. D.h. ich suche nach einer Möglichkeit, dass die Quelle des Vorgangs beim DragOver über ein (fremdes) Ziel die erlaubten Möglichkeiten anpassen kann.
Denn ein "Move" in den Explorer (also einen anderen Ordner) wäre in meinem Anwendungsfall absolut nicht intuitiv, sondern kontraproduktiv und würde regelmäßig zu "Datenverlust" führen - weil die Dateien plötzlich nicht mehr da sind, so man sie erwarten würde.
The angels have the phone box.
|