Thema: Delphi Formweites Drag & Drop

Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Formweites Drag & Drop

  Alt 6. Jun 2013, 16:03
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.
fork me on Github
  Mit Zitat antworten Zitat