CL_DRAGDROP - Behavior für Drag&Drop

BAL_S_LOG - Application Log: Log header data   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Funktionalität

Die Klasse CL_DRAGDROP dient zur Beschreibung der Drag & Drop Eigenschaft von GUI Controls. Die wesentlichenEigenschaften sind die beim Drag & Drop verwendeten Objekt und Angaben über die Art der Drag & Drop Operation.

Die Art des Drag & Drop Objekts wird über den FLAVOR beschrieben. Der Flavor ist ein String,der ähnlich betrachtet werden kann wie ein Klassennamen oder Mime Type. Drag & Drop kann nur zwischen GUI Controls funktionieren, die den gleichen FLAVOR in der Drag & Drop Beschreibung beinhalten.

Zusätzliche Optionen des Drag & Drop sind Angaben ob ein Control Quelle bzw. Ziel einer Drag & Drop -Operation ist, ob die Operation einer Verschiebung des Objekts (Move) oder einer Kopie des Objekts entspricht.

Bei der Verwendung von Drag & Drop müssen folgende Schritte programmiert werden :

  • Erzeugen der beteiligten Controls und registrieren auf die entsprechenden Drag & Drop Events.
  • Erzeugen der notwendigen Drag & Drop Beschreibungen (CL_DRAGDROP). Diese Beschreibungen geben an, welche(n) Flavor ein Objekt anbietet, ob das Objekt Drag Quelle oder Drop Ziel ist und die Art der Operation.
  • Zuweisung der Drag & Drop Beschreibungen an die Controls, bzw. deren Drag & Drop fähigenObjekte. Je nach Controlverschalung und Schnittstelle wird diese Zuweisung über ein Objekt derKlasse CL_DRAGDROP oder über das Handle einer Instanz der Klasse CL_DRAGDROP realisiert (siehe Methode GET_HANDLE).
  • Bereitstellen von Ereignisbehandlern. In den meisten Fällen wird Drag & Drop nicht von denControl Verschalungen realisiert werden können, sondern muß vom Verwender der Controls implementiert werden. Hierfür gibt es bis zu 4 Ereignisse deren Auftreten implementiert werden kann.

Drag & Drop lauft danach nach folgendem Schema ab :

  • Eine Drag & Drop Operation kann nur auf Objekten gestartet werden, die als Drag Quelle ausgezeichnetsind. Zum Zeitpunkt des Ziehens eines Objekts werden keine Ereignisse erzeugt. Ale Ereignisse werden bis zum Zeitpunkt des Drop verzögert.
  • Ein Drop ist nur auf Objekten möglich, die folgende Eigenschaften erfüllen
  • Der Flavor von Drag Quelle und Drop Ziel müssen gleich sein.

  • Der Effekt (Move / Copy) muß übereinstimmen.

  • Beide Objekte müssen im gleichen Programm (interner Modus) leben.

In diesem Fall kann der Benutzer das Objekt fallen lassen.

  • Für den Verwender von Drag & Drop können nun folgende Ereignisse auftreten. (Je nachControlimplementierung können diese Ereignisse andere Namen haben und zusätzliche Control-spezifische Parameter tragen)
  • OnGetFlavor : Dieses Ereignis wird ausgelöst, wenn es mehrere mögliche übereinstimmende Flavors gibt. Das Ziel Objekt kann in diesem Ereignisbehandler den gewünschte Flavor bestimmen.

  • OnDrag : Diese Ereignis wird auf dem Quell Objekt der Drag & Drop Operation ausgelöst. DieAufgabe des Ereignisbehandlers ist, das Objekt welches Gegenstand der Operation ist, eindeutig zu beschreiben.Dafür dient die Klasse CL_DRAGDROPOBJECT. Diese Klasse hat ein Attribut OBJECT TYPE REF TO OBJECT. In diesem Attribut kann der Ereignisbehandler ein beliebiges Objekt unterbringen.

  • OnDrop : Diese Ereignis wird auf dem Zielobjekt der Drag & Drop Operation ausgelöst. DieAufgabe des Ereignisbehandlers ist, das Objekt, welches in OnDrop zur Verfügung gestellt wurde auszuwerten und entsprechende Aktionen (einfügen neuer Daten) auf dem Zielcontrol vorzunehmen.

  • OnDropComplete : Dieses Ereignis wird auf dem Quell Objekt ausgelöst, wenn das OnDrop Ereigniserfolgreich ablief. Das Quellobjekt kann hier entsprechende Aktionen ausführen, besonders im Fall einer Move Operation.

Alle Ereignisse haben ein DragDropObjekt als Parameter. Dieses trägt neben dem Anwendungsobjekt Angaben über den Flavor und eine Methode zum Abbruch der Drag & Drop Operation.


Addresses (Business Address Services)   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.


Length: 4678 Date: 20120527 Time: 112932     triton ( 202 ms )