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:
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]);
Man kann die Funktion auch rekursiv auslegen und so z.B. allen Controls die in einem Panel liegen das Event zuweisen.