Show TOC

Drag&Drop in der CTableLocate this document in the navigation structure

Verwendung

Sie können verschiedene Elemente in einer CTable per drag & drop verschieben. Um dies zu realisieren, stehen die Aggregationen der CTable DRAG_SOURCE_INFOS (0..n) und DROP_TARGET_INFOS (0..n) zur Verfügung.

DRAG_SOURCE_INFOS

DRAG_SOURCE_INFOS sind Quellen von ziehbaren Elementen. Diese Quellen werden für Zeilen ( rowDragInfo an der CTable) und für Spalten ( columnDragInfo an der CTableColumn) verwendet.

Alle Zeilen haben dieselbe DragSourceInfo, wohingegen jede Spalte eine eigene DragSourceInfo haben kann. Die Eigenschaften rowDragInfo und columnDragInfo enthalten in dem Fall die ID einer DragSourceInfo, welche als Aggregation an der Tabelle besteht.

rowDragInfo (0..1)

ID der DragSourceInfo, welche die Quelle (die Drag-Source) für eine Zeile angibt. Die DragSourceInfo muss als Aggregation an der CTable existieren.

columnDragInfo

ID der DragSourceInfo, welche die Quelle (die Drag-Source) für eine Spalte angibt. Die DropTargetInfo muss als Aggregation an der CTable existieren.

DROP_TARGET_INFOS

DROP_TARGET_INFOS sind die Ziele, auf welche Elemente fallen gelassen werden können.

Drop-Zonen einer CTable

Es gibt unterschiedliche Zonen in einer CTable, in die Elemente fallengelassen werden können:

  • zwischen Spalten:

    DropTargetInfo: columnHeaderDropInfo (0..1)

  • auf Spalten:

    DropTargetInfo: columnDropInfo (0..1)

  • vor oder nach einer Spalte:

    DropTargetInfo: columnEdgeDropInfo (0..1)

  • zwischen Zeilen:

    DropTargetInfo: tableBodyDropInfo (0..1)

  • auf Zeilen:

    DropTargetInfo: rowDropInfo (0..n)

  • vor oder nach einer Zeile:

    DropTargetInfo: rowEdgeDropInfo (0..n)

Die folgende Graphik stellt diese Dropzonen dar und nennt die entsprechende DropTargetInfo:

Folgende Eigenschaften sind für drag & drop in der CTable relevant:

  • columnHeaderDropInfo (0..1)

    Diese DropTargetInfo bestimmt, welche Elemente zwischen alle Spalten gezogen werden können. Die DropTargetInfo muss als Aggregation an der CTable existieren.

    Wenn Spalten eine eigene columnEdgeDropInfo definieren, dann überschreibt diese columnEdgeDropInfo die columnHeaderDropInfo der jeweiligen Spalte.

  • tableBodyDropInfo (0..1)

    Diese DropTargetInfo bestimmt, welche Elemente zwischen Zeilen fallengelassen werden können. Die DropTargetInfo muss als Aggregation an der CTable existieren.

    Eine Ausnahme gilt, wenn eine Zeile diese Eigenschaft mit Hilfe von rowEdgeDropInfoüberschreibt.

  • rowDropInfo (0..n)

    Diese DropTargetInfo bestimmt, welche Elemente auf Zeilen fallengelassen werden können. Über den Kontext der CTable kann damit für jede Zeile eine beliebige DropTargetInfo verwendet werden. Die DropTargetInfo muss als Aggregation an der CTable existieren.

  • rowEdgeDropInfo (0..n)

    Diese DropTargetInfo bestimmt, welche Elemente vor oder nach einer Zeile fallengelassen werden können. Über den Kontext der CTable kann damit für jede Zeile entschieden werden, welche Elemente davor und danach fallengelassen werden kann. Die DropTargetInfo muss als Aggregation an der CTable existieren.

Das Ereignis onDrop der CTable wird aufgerufen, wenn etwas zwischen oder auf Zeilen fallengelassen wurde.

Folgende Eigenschaften sind für drag & drop in der CTableColumn relevant:

  • columnDropInfo (0..1)

    Diese DropTargetInfo bestimmt, welche Elemente auf einer Spalte fallengelassen werden können. Die DropTargetInfo muss als Aggregation an der CTable existieren.

  • columnEdgeDropInfo (0..1)

    Diese DropTargetInfo bestimmt, welche Elemente vor oder nach einer Spalte fallengelassen werden können. Die DropTargetInfo muss als Aggregation an der CTable existieren.

Das Ereignis onDrop der CTableColumn wird aufgerufen, wenn ein Element zwischen oder auf Spalten fallengelassen wurde.

Hinweis

Es gelten folgende Einschränkungen:

  • Bei der CTableColumn dürfen columnDropInfo und columnEdgeDropInfo nicht identisch sein.

  • Bei der CTableColumn darf columnDropInfo für rowDropInfo und rowEdgeDropInfo nicht identisch sein.

  • Bei der CTableColumn darf columnEdgeDropInfo für rowDropInfo und rowEdgeDropInfo nicht identisch sein.

  • Bei der CTable dürfen columnHeaderDropInfo und tableBodyDropInfo nicht identisch sein.

Hinweis

Um ein Element mit DragSourceInfo in Tabellenzellen fallen zu lassen, verwenden Sie als Zelleditor in der C-Table den DropTargetCellEditor.

Weitere Informationen

Eine Testanwendung zu Drag & Drop in der CTable finden Sie im System unter WDR_TEST_C_TABLE und WDR_TEST_DRAG_AND_DROP.

Weitere Informationen zu Drag & Drop finden Sie hier.