AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formweites Drag & Drop

Offene Frage von "Guido R."
Ein Thema von Guido R. · begonnen am 6. Jun 2013 · letzter Beitrag vom 6. Jun 2013
Antwort Antwort
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#1

Formweites Drag & Drop

  Alt 6. Jun 2013, 14:22
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.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Formweites Drag & Drop

  Alt 6. Jun 2013, 14:36
RegisterDragDrop auf das Form Handle anwenden.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: Formweites Drag & Drop

  Alt 6. Jun 2013, 15: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
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Formweites Drag & Drop

  Alt 6. Jun 2013, 21:03
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz