Computerwissenschaften

Grundlegendes zu Drag & Drop-Vorgängen in Delphi

„Ziehen und Ablegen“ bedeutet, die Computermaus- Taste gedrückt zu halten, während die Maus bewegt wird, und dann die Taste loszulassen, 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 (Picture-Eigenschaft), und setzen Sie dann die DragMode- Eigenschaft auf dmManual . Wir werden ein Programm erstellen, mit dem eine Laufzeit des TImage-Steuerelements mithilfe der Drag & Drop-Technik verschoben werden kann .

 

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 das Ziehen von Komponenten um die Anwendung nicht zulässig ist, außer unter besonderen Umständen, für die wir den entsprechenden Code schreiben müssen. Unabhängig von der Einstellung für die DragMode-Eigenschaft wird die Komponente nur verschoben, wenn der richtige Code zum Neupositionieren geschrieben wurde.

 

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 also 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 der Accept- Parameter standardmäßig True ist, lehnt das Steuerelement das gezogene Objekt ab, wenn kein OnDragOver-Ereignishandler bereitgestellt wird (als ob der Accept-Parameter 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 an seiner ursprünglichen Position sichtbar bleibt, während sich der Mauszeiger bewegt. 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 beim Ziehen des Steuerelements angezeigte Cursorbild ändern möchten, 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 was auch immer Sie möchten verwenden, wie eine BMP-Bilddatei oder eine CUR-Cursordatei.

 

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 verwenden wir die Tastenkombination Strg + MouseDown , damit das Ziehen stattfinden kann. Setzen Sie den DragMode von TImage zurück auf dmManual und schreiben Sie den MouseDown-Ereignishandler wie folgt:

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

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.