
In diesem Abschnitt werden die Besonderheiten des SAP Trees bei Drag&Drop Operationen vorgestellt.
Um auf die Ereignisse reagieren zu können, müssen Sie sie registrieren. Anders als in der normalen Ereignisbehandlung werden Drag&Drop-Ergeinisse nicht mit dem Control Framework durch die Methode set_registered_events registriert. Die Registrierung erfolgt automatisch über die Verschalung des SAP Tree Control.
Sie müssen dennoch weiterhin Behandlermethoden für die Ereignisse angeben:
Die Ereignisse werden immer als Systemereignisse registriert.
Weiterhin müssen Sie beim Aufbau der Knotentabelle festlegen, welcher Knoten Drag&Drop fähig ist und welche Flavors der Knoten haben soll. Dazu versorgen Sie das Feld u der Knotentabelle mit dem entsprechenden Drag&Drop-Verhalten (siehe Punkt 3 im Kapitel Ablauf einer Drag&Drop Operation ). Dies erfordert folgende Schritte (siehe auch Beispiel für Drag&Drop Programmierung ):
Definieren Sie das Drag&Drop Verhalten:
DATA behaviour_left TYPE REF TO cl_dragdrop.
CREATE OBJECT behaviour_left.
CALL METHOD behaviour_left->add
EXPORTING
flavor = 'Tree_move_to_Edit'
dragsrc = 'X'
droptarget = ' '
effect = cl_dragdrop=>copy.
Besorgen Sie sich mit der Methode get_handle ein Handle auf das Drag&Drop Verhalten:
CALL METHOD behaviour_left->get_handle
IMPORTING handle = handle_tree.
Weisen Sie dieses Handle dem Feld DRAGDROPID des Eintrags in der Knotentabelle zu:
node-dragdropid = handle_tree. " handle of behaviour
Einträge vom Typ tree->item_class_checkbox (Ankreuzfeld), tree->item_class_button (Drucktaste) und tree->item_class_link (Link) können kein Quellobjekt eines Drag&Drop Vorgangs sein.
In der folgenden Tabelle sind die für das Drag&Drop relevanten Ereignisse aufgelistet:
|
Ereignis |
Beschreibung |
|
ON_DROP_GET_FLAVOR |
Siehe Ereignisse bei Drag&Drop unter Ereignis ONGETFLAVOR |
|
ON_DRAG |
Siehe Ereignisse bei Drag&Drop unter Ereignis ONDRAG Für Bäume ohne Mehrfachselektion ( NODE_SELECTION_MODE = TREE->NODE_SEL_MODE_SINGLE ) |
|
ON_DRAG_MULTIPLE |
Siehe Ereignisse bei Drag&Drop unter Ereignis ONDRAG Für Bäume mit Mehrfachselektion ( NODE_SELECTION_MODE = TREE->NODE_SEL_MODE_MULTIPLE ) |
|
ON_DROP |
Siehe Ereignisse bei Drag&Drop unter Ereignis ONDROP |
|
ON_DROP_COMPLETE |
Siehe Ereignisse bei Drag&Drop unter Ereignis ONDROPCOMPLETE Für Bäume ohne Mehrfachselektion ( NODE_SELECTION_MODE = TREE->NODE_SEL_MODE_SINGLE ) |
|
ON_DROP_COMPLETE_MULTIPLE |
Siehe Ereignisse bei Drag&Drop unter Ereignis ONDROPCOMPLETE Für Bäume mit Mehrfachselektion ( NODE_SELECTION_MODE = TREE->NODE_SEL_MODE_MULTIPLE ) |
Die einzelnen Ereignisse besitzen folgende Ereignisparameter:
|
Ereignis |
Ereignisparameter |
Beschreibung |
|
ON_DROP_GET_FLAVOR |
NODE_KEY |
Technischer Name des Knotens, auf den das Quellobjekt gezogen wurde |
|
DRAG_DROP_OBJECT |
Datenobjekt zur Beschreibung des Quellobjekts |
|
|
FLAVORS |
Gemeinsame Flavors des Drag&Drop Vorgangs |
|
|
ON_DRAG |
NODE_KEY |
Technischer Name des Knotens, der als Quellobjekt ausgewählt wurde |
|
ITEM_NAME (nicht bei Simple Tree) |
Technischer Name des Eintrags, der als Quellobjekt ausgewählt wurde |
|
|
DRAG_DROP_OBJECT |
Datenobjekt zur Beschreibung des Quellobjekts |
|
|
ON_DRAG_MULTIPLE |
NODE_KEY_TABLE |
Tabelle der Knoten, die als Quellobjekte ausgewählt wurden |
|
ITEM_NAME (nicht bei Simple Tree) |
Technischer Name des Eintrags, der als Quellobjekt ausgewählt wurde |
|
|
DRAG_DROP_OBJECT |
Datenobjekt zur Beschreibung des Quellobjekts |
|
|
ON_DROP |
NODE_KEY |
Technischer Name des Knotens, auf den das Quellobjekt gezogen wurde |
|
DRAG_DROP_OBJECT |
Datenobjekt zur Beschreibung des Quellobjekts |
|
|
ON_DROP_COMPLETE |
NODE_KEY |
Technischer Name des Knotens, der als Quellobjekt ausgewählt wurde |
|
ITEM_NAME (nicht bei Simple Tree) |
Technischer Name des Eintrags, der als Quellobjekt ausgewählt wurde |
|
|
DRAG_DROP_OBJECT |
Datenobjekt zur Beschreibung des Quellobjekts |
|
|
ON_DROP_COMPLETE_MULTIPLE |
NODE_KEY_TABLE |
Tabelle der Knoten, die als Quellobjekte ausgewählt wurden |
|
ITEM_NAME (nicht bei Simple Tree) |
Technischer Name des Eintrags, der als Quellobjekt ausgewählt wurde |
|
|
DRAG_DROP_OBJECT |
Datenobjekt zur Beschreibung des Quellobjekts |