Zum Hauptinhalt springen

Ereignisabläufe Drag & Drop

Ereignisabläufe Drag & Drop Ablaufpläne zur Ereignisverarbeitung bei Drag & Drop

Ablauf der Ereignisse

Wird beispielsweise die linke Maustaste in einem Oberflächen-Objekt gedrückt und gleichzeitig um einen kleinen Bereich bewegt, löst die DragSource das Ereignis EvtDragInit aus.

In diesem Ereignis kann die DragSource entscheiden, ob ein Drag & Drop-Vorgang gestartet werden soll oder nicht und gegebenenfalls die entsprechenden Daten in dem DragData -Objekt aufbereiten. Wird keine Drag & Drop-Operation durchgeführt, erfolgt nach dem Ereignis EvtDragInit der Aufruf des Ereignisses EvtMouse bzw. EvtMouseItem.

Wird der Vorgang gestartet, erhält ein DropTarget-Objekt zunächst ein Ereignis, wenn der Mauszeiger das DropTarget-Objekt betritt (EvtDropEnter). Dieses kann dann entscheiden, ob die bereitgestellten Daten des DragData -Objekts unterstützt werden oder nicht. Durch den Rückgabewert wird vom System der dazugehörende Mauszeiger angezeigt.

Es können folgende Fälle auftreten:

  1. Die Daten werden durch das DropTarget-Objekt unterstützt und der Benutzer lässt die Daten fallen Es wird das Ereignis EvtDrop für das DropTarget-Objekt ausgelöst. In dem Ereignis können die Daten aufbereitet und in das Objekt übernommen werden.
  2. Die Daten werden durch das DropTarget-Objekt nicht unterstützt und der Benutzer lässt die Daten fallen Werden die Daten in diesem Objekt fallen gelassen oder der Vorgang abgebrochen, wird kein Ereignis aufgerufen.
  3. Der Benutzer bewegt die Maus aus dem Objekt hinaus Es wird das Ereignis EvtDropLeave für das DropTarget-Objekt ausgelöst.
  4. Der Benutzer bewegt die Maus in einem Objekt Es wird das Ereignis EvtDropOver für das DropTarget-Objekt ausgelöst.

Im Fall a) wird also EvtDrop aufgerufen. Im Fall c) wird EvtDropLeave aufgerufen und der Drag & Drop-Vorgang läuft weiter. Es wird wieder ein Ereignis erzeugt, wenn der Benutzer die Maus in das DropTarget bewegt usw. Im Fall d) wird EvtDropOver aufgerufen und der Drag & Drop-Vorgang läuft ebenfalls weiter.

Im Fall a) und b) ist der Drag & Drop-Vorgang beendet. Das DragSource-Objekt erhält die Benachrichtigung EvtDragTerm. Im Fall a) mit positivem Ausgang ("Daten wurden übertragen") und im Fall b) mit negativem Ausgang ("Keine Daten wurden übertragen"). Die DragSource erhält also in jedem Fall eine Benachrichtigung, wenn der Drag & Drop-Vorgang beendet wurde.

info

Die Ereignisse EvtDragInit und EvtDragTerm werden nur dann ausgelöst, wenn sich das DragSource -Objekt in der CONZEPT 16-Applikation befindet. Ebenso werden die Ereignisse EvtDropEnter , EvtDropOver , EvtDropLeave und EvtDrop nur ausgelöst, wenn das DropTarget-Objekt sich in der CONZEPT 16-Applikation befindet.