Grundlegendes zu Drag & Drop-Vorgängen in Delphi

"Ziehen und Ablegen" bedeutet, die Taste gedrückt zu halten Computermaus Drücken Sie die Taste, während die Maus bewegt wird, und lassen Sie dann die Taste los, um das Objekt abzulegen. Delphi erleichtert das Programmieren des Ziehens und Ablegens in Anwendungen.

Sie können wirklich von / nach ziehen, wo immer Sie möchten, z. B. von einem Formular in ein anderes oder vom Windows Explorer in Ihre Anwendung.

Beispiel zum Ziehen und Ablegen

Starten Sie ein neues Projekt und fügen Sie ein Bildsteuerelement in ein Formular ein. Verwenden Sie den Objektinspektor, um ein Bild zu laden (Bildeigenschaft), und legen Sie dann die fest DragMode Eigentum an dmManual. Wir erstellen ein Programm, mit dem Sie eine Laufzeit des TImage-Steuerelements mithilfe von verschieben können Drag & Drop-Technik.

DragMode

Komponenten ermöglichen zwei Arten des Ziehens: automatisches und manuelles Ziehen. Delphi verwendet die DragMode-Eigenschaft, um zu steuern, wann der Benutzer das Steuerelement ziehen kann. Der Standardwert dieser Eigenschaft ist dmManual. Dies bedeutet, dass Komponenten um das Objekt gezogen werden Eine Bewerbung ist nur unter besonderen Umständen gestattet, für die wir die entsprechender Code. Unabhängig von der Einstellung für die DragMode-Eigenschaft wird die Komponente nur verschoben, wenn der richtige Code zum Neupositionieren geschrieben wurde.

instagram viewer

OnDragDrop

Das Ereignis, das das Ziehen und Ablegen erkennt, wird als OnDragDrop-Ereignis bezeichnet. Wir verwenden es, um anzugeben, was passieren soll, wenn der Benutzer ein Objekt fallen lässt. Wenn wir eine Komponente (ein Bild) an einen neuen Speicherort in einem Formular verschieben möchten, müssen wir Code für den OnDragDrop-Ereignishandler des Formulars schreiben.

Der Source-Parameter des OnDragDrop-Ereignisses ist das Objekt, das gelöscht wird. Der Typ des Quellparameters ist TObject. Um auf seine Eigenschaften zugreifen zu können, müssen wir ihn in den richtigen Komponententyp umwandeln, in diesem Beispiel TImage.

Akzeptieren

Wir müssen das OnDragOver-Ereignis des Formulars verwenden, um zu signalisieren, dass das Formular das TImage-Steuerelement akzeptieren kann, das wir darauf ablegen möchten. Obwohl die akzeptieren Parameter Der Standardwert ist True. Wenn kein OnDragOver-Ereignishandler bereitgestellt wird, lehnt das Steuerelement das gezogene Objekt ab (als ob der Parameter Accept in False geändert worden wäre).

Führen Sie Ihr Projekt aus und versuchen Sie, Ihr Bild per Drag & Drop zu verschieben. Beachten Sie, dass das Bild beim Ziehen an seiner ursprünglichen Position sichtbar bleibt Mauszeiger bewegt sich. Wir können die OnDragDrop-Prozedur nicht verwenden, um die Komponente während des Ziehens unsichtbar zu machen, da diese Prozedur erst aufgerufen wird, nachdem der Benutzer das Objekt gelöscht hat (wenn überhaupt).

DragCursor

Wenn Sie das Cursorbild ändern möchten, das beim Ziehen des Steuerelements angezeigt wird, verwenden Sie die DragCursor-Eigenschaft. Die möglichen Werte für die DragCursor-Eigenschaft sind dieselben wie für die Cursor-Eigenschaft. Sie können animierte Cursor oder eine beliebige BMP-Bilddatei oder eine CUR-Cursordatei verwenden.

BeginDrag

Wenn DragMode dmAutomatic ist, beginnt das Ziehen automatisch, wenn wir eine Maustaste mit dem Cursor auf dem Steuerelement drücken. Wenn Sie den Wert der DragMode-Eigenschaft von TImage auf dem Standardwert dmManual belassen haben, müssen Sie die BeginDrag / EndDrag-Methoden verwenden, um das Ziehen der Komponente zu ermöglichen. Eine häufigere Methode zum Ziehen und Ablegen besteht darin, DragMode auf dmManual zu setzen und das Ziehen durch Behandeln von Mouse-Down-Ereignissen zu starten.

Jetzt werden wir die verwenden Strg + MouseDown Tastaturkombination zum Ziehen. einstellen TImage's DragMode zurück zu dmManual und schreibe den MouseDown Event Handler wie folgt:

BeginDrag verwendet einen booleschen Parameter. Wenn wir True übergeben (wie in diesem Code), beginnt das Ziehen sofort. Wenn False, startet es erst, wenn wir die Maus ein kurzes Stück bewegen. Denken Sie daran, dass hierfür die Strg-Taste erforderlich ist.