Dragdrop ist eine schnelle Möglichkeit, Fenster zu bedienen. Als Entwickler basierend auf Windows
Delphi unterstützt auch Drag & Drop -Operationen, und die Drag & Drop -Funktion des Anwendungssystems ist sehr bequem, was die wirklich widerspiegelt
Die Kraft und Bequemlichkeit von Delphi.
Alle von Delphi (Control, die die Input Focus erhalten) bereitstellen, unterstützen Drag & Drop -Operationen und haben
Die entsprechenden Drag & Drop -Eigenschaften, Drag & Drop -Ereignisse und Drag & Drop -Methoden. Als nächstes werden wir zuerst die Drag & Drop-Unterstützung der Kontrolle vorstellen und dann das geben
Allgemeine Schritte und Anwendungsbeispiele für das Senden von Drag & Drop -Operationen.
9.1 Drag & Drop -Unterstützung für Steuerelemente
Bei Drag -and -Drop -Operationen können Steuerelemente in zwei Kategorien unterteilt werden: Quellensteuerung und Zielsteuerung. Die meisten Steuerelemente können als Quellensteuerungen verwendet werden
Kann auch als Zielregelung verwendet werden. Es gibt aber auch einige Kontrollen, die nur einen von ihnen unterstützen können.
9.1.1 Drag & Drop -Eigenschaften
Es gibt zwei Hauptwiderstandseigenschaften:
● DragMode: Drag -Modus
Sie sind alle in der Drag-and-Drop-Quellensteuerung eingestellt. DragMode steuert den Benutzer beim Drücken der Steuerung während der Laufzeit auf die Steuerung
Wie reagiert die Steuerung, wenn die Maus sinkt? Wenn DragMode auf dmautomatisch eingestellt ist, drückt der Benutzer die Maus auf der Steuerung
DragMode startet automatisch;
Um festzustellen, ob ein Widerstand starten kann.
DragCursor wird verwendet, um den Cursor auszuwählen, der beim Ziehen angezeigt wird.
Schnittstellenspezifikationen, die im Programmierungsprozess üblich sind, sollten von Entwicklern respektiert werden. Aber manchmal für bestimmte Zwecke,
Entwickler können DragCursor auch ihren eigenen Cursor zuweisen.
9.1.2 Drag & Drop -Event
Es gibt drei Hauptdrag- und Drop -Events:
● ONDRAGOVER: Inspirieren Sie beim Ziehen vorbei
● ONDRAGROP: Inspirieren Sie beim Ziehen und fallen
● OnendDrop: Inspirieren Sie beim Ziehensende inspirieren
Die ersten beiden Ereignisse werden von der Zielkontrolle reagiert, und letztere wird durch die Quellenkontrolle beantwortet.
Die Hauptfunktion des ONDRAGOver -Ereignisses besteht darin, festzustellen, ob das Steuerelement akzeptabel ist, wenn der Benutzer den Ziehen einbringt.
Die Parameter umfassen:
Quelle: Tobject;
Status: TDRagState;
TdragState ist ein Aufzählungstyp, der die Beziehung zwischen Drag- und Dropelementen und Zielsteuerungen darstellt.
Typ TDRAGState = (dsDRagenter, dsdragleave, dsdragmove);
Die Bedeutung verschiedener Werte ist wie folgt:
Tabelle 9.1 Der Wert und die Bedeutung von Dragstate
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
Wertbedeutung
────schung "
DSDRAGERN Ziehen Sie das Objekt in ein Steuerelement, mit dem das gezogene Objekt fallen gelassen werden kann. ist der Standardzustand.
DSDRagleave zieht das Objekt von einem Steuerelement weg, mit dem das Drag -Objekt fallen gelassen werden kann.
DSDRAGMOVE -Drag -Objekt bewegt sich innerhalb eines Steuerelements, mit dem das Drag -Objekt fallen gelassen werden kann.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
Der Benutzer kann die bereitgestellten Parameter verwenden, um festzustellen, ob der abgebrochene Widerstand akzeptabel ist, z. B.:
● Beurteilung der Quellenkontrolltyp:
Akzeptieren: = Quelle ist tlabel;
● Beurteilung der Quellenkontrollobjekt:
Akzeptieren: = (source = tabset1);
● Richter Cursor -Position:
Siehe Routinen in (9.2), (9.3).
● Richter Drag Status:
If (Quelle ist tlabel) und (state = dsdragmove) dann
Beginnen Sie Source.Dragicon: = 'new.ico';
Ende
anders
Akzeptieren: = falsch;
Bei Accept = true kann die Zielkontrolle auf das ONDRAGROP -Ereignis reagieren, mit dem festgestellt wird
Wie man damit umgeht.
Zu den Parametern des ONDRAGREPROP -Ereignisverarbeitungsprozesses gehören die Quellensteuerung und die Cursorposition. Diese Informationen können zur Verarbeitung verwendet werden
Bestätigung.
Das OnendDRAG -Ereignis wird nach Abschluss des Widerstandsvorgangs von der Quellvertretung reagiert und wird von der Quellensteuerung verwendet, um die entsprechende Durchführung zu erhalten
bewältigen. Das Ende des Drag -Operation enthält sowohl die Annahme des Drag -and -Drops, und der Benutzer veröffentlicht es auf einem Steuerelement, das nicht fallen gelassen werden kann.
Setzen Sie die Maus. Die Parameter dieses Ereignisverarbeitungsprozesses umfassen die Zielsteuerung (Ziel) und die Koordinaten der Tropfenposition. Wenn
Target = nil bedeutet, dass das gezogene Element von keiner Kontrolle akzeptiert wird.
In der in Abschnitt 3 eingeführten Drag & Drop-Kopieroperation wird das Dateilistenfeld unten aufgeführt.
Der angezeigte Inhalt sollte aktualisiert werden. Das folgende Programm wird verwendet, um diese Funktion zu implementieren.
Procedure tfmform.filelistendDrag (Absender, Ziel: tobject; x, y: Integer);
Beginnen
Wenn Ziel <> nil ist, filelist.update;
Ende;
Zusätzlich zu den drei oben beschriebenen Ereignissen gibt es ein weiteres Ereignis OnmouseDown, das auch häufig für Drag-and-Drop-Antworten verwendet wird.
Obwohl OnmouseDown kein spezielles Drag & Drop
Implementiert während des Ereignisverarbeitungsprozesses.
9.1.3 Drag & Drop -Methode
Es gibt drei Möglichkeiten, zu ziehen und zu fallen:
● Begindrag: Starten Sie einen Ziehen im manuellen Modus
● Enddrag:
Beenden einen Zug
● Ziehen: Bestimmt, ob eine Steuerung gezogen wird
Alle drei Methoden werden von der Quellensteuerung verwendet.
Wenn DragMode auf DMManual eingestellt ist, muss das Ziehen die Begindrag -Methode des Steuerelements zum Starten aufrufen.
Begindrag hat sofort einen booleschen Parameter. Wenn der Eingangsparameter wahr ist, ziehen Sie sich sofort an, um sofort zu starten.
Wechseln Sie zu den Einstellungen von DragCursor. Wenn der Eingabeparameter falsch ist, bis der Benutzer den Cursor um einen bestimmten Abstand bewegt
(5 Pixel), bevor Sie den Cursor wechseln und anfangen zu ziehen. Dies ermöglicht das Steuer
Ziehen Sie den Betrieb.
Die EndDRAG -Methode abbricht den gezogenen Zustand eines Objekts. Es hat einen Booleschen Parameterabfall. Wenn Drop eingestellt ist
Zu True wird das gezogene Objekt in der aktuellen Position fallen (ob es akzeptiert werden kann, wird durch die Zielregelung bestimmt).
Wenn falsch, wird das Ziehen an Ort und Stelle an Ort und Stelle abgebrochen.
Das folgende Programm zeigt, dass das Ziehen beim Ziehen in ein Bedienfeld storniert wird.
procedure tform1.panel1dragover (Absender, Quelle: Tobject; x, y: Integer;
Zustand: Tdragstate;
Beginnen
Akzeptieren: = falsch;
if (Quelle ist tlabel) und (Zustand = dsdragenter) dann dann
(Quelle als tlabel) .endDrag (falsch);
Ende;
Die DRAGING -Methode bestimmt, ob eine Steuerung gezogen wird. Wenn der Benutzer im folgenden Beispiel ein anderes Kontrollkästchen zieht
Wenn sich das Fenster in eine andere Farbe ändert.
procedure tform1.formActivate (Absender: tobject);
Beginnen
CheckBox1.DRAGMODE: = dmautomatisch;
CheckBox2.DRAGMODE: = DMUTOMATIC;
CheckBox3.DRAGMode: = dmautomatic;
Ende;
procedure tform1.FormDagover (Absender, Quelle: Tobject; x, y: Integer;
Zustand: Tdragstate;
Beginnen
Wenn Checkbox1.Dagging dann
Farbe: = Claqua;
Wenn CheckBox2.DRAGGing dann
Farbe: = Clylellow;
Wenn CheckBox3.DRAGGing dann
Farbe: = Cllim;
Ende;