Programmierung

Drag & Drop (Teil 1)

drag & drop

Das Ziehen von Daten mit der Maus zwischen Anwendungen wird allgemein als Drag & Drop bezeichnet. Auch CONZEPT 16 unterstützt die Verwendung dieser Methode. In diesem Blog-Artikel stelle ich die Grundlagen des Verfahrens vor.

Windows

Windows realisiert Drag & Drop über COM. Den Kern bilden drei Interfaces IDropSource, IDropTarget sowie IDataObject. Diese Schnittstellen sind daran beteiligt, wenn die Daten (IDataObject) von der Quelle (IDropSource) zum Ziel (IDropTarget) übertragen werden sollen. Quelle und Ziel sind dabei nur über das gemeinsam vorhandene IDataObject verbunden. Außer den dort enthaltenen Daten gibt es keine Verbindung zwischen Quelle und Ziel.

Die Quelle stellt die Daten bereit, die im Daten-Objekt verfügbar sind und vom Ziel abgerufen werden können.

CONZEPT 16

Die Oberflächen-Objekte von CONZEPT 16 können sowohl Quelle als auch Ziel einer Drag & Drop-Operation sein. Dabei kann es sich sogar um ein- und dasselbe Objekt handeln. Der dahinter liegende Mechanismus bleibt unverändert.
CONZEPT 16 vereinfacht den Drag & Drop-Vorgang für den Entwickler, indem es ihm das DragData-Objekt zu Verfügung stellt. Hierbei handelt es sich um eine Kapselung einer IDataObject-Instanz (siehe Abb.1).

Datenformate des DragData-ObjektesAbb. 1: Datenformate des DragData-Objektes
Formate

Das DragData-Objekt stellt dem CONZEPT 16-Entwickler fünf Standard-Formate und ein applikations-spezifisches Format für den Daten-Transport zur Verfügung. Hierbei ist es durchaus üblich, dass eine Quelle mehr als eine Repräsentation eines Formates zur Verfügung stellt (z.B. Text und RTF).

  • _WinDropDataUser
    Hierbei handelt es sich um ein applikations-spezifisches Format, das für den Austausch von Daten innerhalb von CONZEPT 16-Anwendungen genutzt werden kann und bezüglich des Inhalts frei definierbar ist.
  • _WinDropDataText
    Dieses Format stellt Text zur Verfügung. Er wird vom DragData-Objekt automatisch in den CONZEPT 16-Zeichensatz gewandelt. Dieses Format wird beispielsweise von WordPad geliefert.
  • _WinDropDataRtf
    Dieses Format stellt Text im RTF-Format zur Verfügung. Auch hier findet automatisch eine Konvertierung in den CONZEPT 16-Zeichensatz statt. WordPad und Word liefern dieses Format.
  • _WinDropDataFile
    Dieses Format überträgt eine Liste von Dateinamen bzw. Pfadnamen. Dies wird beispielsweise vom Windows-Explorer generiert, wenn Dateien oder Pfade gezogen werden.
  • _WinDropDataContent
    Dieses Format repräsentiert beliebige binäre Daten. Outlook wählt u.a. dieses Format, um Mail-Inhalte zu übertragen.

Mit dem CodeLibrary-Beispiel DragAndDropContents kann sehr schön nachvollzogen werden, welche Formate von welcher Anwendung geliefert werden.

Ausblick

Nach dieser grundlegenden Einführung möchte ich im nächsten Teil auf die praktische Umsetzung des Drag & Drop in CONZEPT 16 eingehen.

Keine Kommentare

Kommentar abgeben