![]() |
Formweites Drag & Drop
Hallo !
Gibt's eine Möglichkeit, dass die Form das Drag&Drop-Handling für alle Komponenten übernehmen zu lassen, ähnlich wie man mit "KeyPreview" dafür sorgen kann, dass die Form alle Keyboardeingaben überprüft? Ich würde mir gerne ersparen bei zig Edits, Labels, etc. pro Form die selbe OnDragDrop und OnDragOver einzustellen. Wenn man mal eine vergisst sieht's irgenwie komisch aus. Danke Guido R. |
AW: Formweites Drag & Drop
![]() |
AW: Formweites Drag & Drop
Es gibt zwei verschiedene Arten von Drag & Drop:
1.) zwischen Delphi-Controls innerhalb der Anwendung 2.) aus dem Explorer in die Anwendung (Drag & Drop von Files und anderen Shell-Objekten) auch die umgekehrte Richtung ist möglich Bei 2.) ist es eh so, dass man das Formular als Drop-Ziel registriert (siehe Beitrag #2) Bei 1.) ist es so, dass es keinen Sinn ergibt jedes beliebige Control per Drag & Drop auf ein anderes Control ziehen zu können. Das Event OnDragDrop muss sowie immer individuell auf die jeweilige Absicht ausprogrammiert werden. Man könnte natürlich eine Hilfsfunktion schreiben:
Delphi-Quellcode:
Man kann die Funktion auch rekursiv auslegen und so z.B. allen Controls die in einem Panel liegen das Event zuweisen.
procedure SetOnDragOverEvent(ondragover:TDragOverEvent; controlarray:array of TControl);
var i : Integer; begin for i:= Low(controlarray) to High(controlarray) do begin if Assigned(controlarray[i]) the controlarray[i].OnDragOver := ondragover; end; end; SetOnDragOverEvent(self.MyDragOver, [Edit1, Edit2, Memo1]); |
AW: Formweites Drag & Drop
0K. Werden wir mal etwas konkreter.
Man nehme ein MDI-Programm zur Rechnungserstellung. In eine Rechnung werden Daten aus einer Kundenliste und einer Artikelliste übernommen. Diese Daten werden in eigenen MDI-Children jeweils in DB-Grids angezeigt. Nur diese Daten sollen vom RechnungsEditor per D&D akzeptiert werden, Dann ist es völlig egal, ob ich Kundendaten über die Rechnungspositionen oder Artikel über die Adressfelder droppe. Anhand der Quelle weiß das Programm um welche Daten es sich handelt und wo diese folglich hingehören. Die Frage ist jetzt: Muß ich jedes OnDragOver und OnDragDrop -Event eines jeden Controls mit den D&D-Funktionen der Form verknüpfen, oder gibt es eine Möglichkeit festzulegen, daß egal wo auf dieser Form mit all seinen Controls geDragt und geDropt wird stets die Methoden der Form genommen werden sollen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz