DragOSFormats()

Syntax

Ergebnis = DragOSFormats(Formate(), Anzahl [, Aktionen])
Beschreibung
Startet eine Drag & Drop Operation mit einer Liste vorgegebener Daten-Formate. Die verfügbaren Format-Typen und die Art und Weise, wie diese dargestellt werden, hängt vom Betriebssystem ab. Diese Funktion bietet die Möglichkeit zum Arbeiten mit Formaten, welche nicht nativ von PureBasic unterstützt werden, während trotzdem die von dieser Befehls-Bibliothek angebotenen einfachen Mechanismen zum Ausführen einer Drag & Drop Operation genutzt werden können.

Parameter

Formate() Ein Array von DragDataFormat Strukturen, welches ein oder mehrere "Drag"-Formate enthält.
Die Struktur hat die folgende Form:
  Structure DragDataFormat
    Format.i    ; Die OS-spezifische ID für das "zu verschiebende" Format (siehe unten für weitere Informationen)
    *Buffer     ; Der Speicherpuffer, welcher die Daten in diesem Format enthält
    Size.i      ; Die Größe der Daten im Puffer
  EndStructure
Windows:
Auf Windows gibt das 'Format'-Feld einen CLIPBOARDFORMAT Wert an. Es kann jedes standardmäßige Clipboard (Zwischenablage) Format sein (zu finden im Windows SDK) oder ein mit dem API-Befehl RegisterClipboardFormat_() registriertes Format.
Linux:
Auf Linux gibt das 'Format'-Feld einen GdkAtom Wert an. Dieser kann mit der gdk Funkion gdk_atom_intern_() erstellt werden. Häufig verstandene Atome sind die gemeinsamen Mime-Typen (z.B. "text/html" für Html-Daten). Das Atom kann auch mit jedem String, welcher von der Ziel-Applikation verstanden wird, erstellt werden.
MacOSX:
Auf MacOSX gibt das 'Format'-Feld einen "Clipboard Scrap"-Typ an. Dies sind 4-Zeichen Konstanten, zum Beispiel 'TEXT'. Es gibt eine Anzahl vordefinierter "Scrap"-Typen, aber auch eigene Werte können verwendet werden, wenn das Zielprogramm diese versteht.
Anzahl Die Anzahl der im Array enthaltenen Formate.

Wenn mehrere Formate "verschoben" werden, wird das Ziel das erste - welches es erkennt - akzeptieren. Daher sollte das Format, welches die meisten Informationen enthält (d.h. die genauesten Daten darstellt), das erste im Array sein, während die üblichen aber weniger inhaltsreichen Formate später folgen. Auf diesem Weg wird jede Applikation die beste Darstellung von Daten erhalten, welche sie versteht.
Aktionen (optional) Eine Kombination der Drag & Drop Aktionen, welche für die Daten erlaubt sein sollen. Wenn der Parameter nicht angegeben wird, wird #PB_Drag_Copy die einzige erlaubte Aktion sein. Mögliche Aktionen sind: (sie können mittels '|' kombiniert werden)
  #PB_Drag_Copy: Die Daten können kopiert werden
  #PB_Drag_Move: Die Daten können verschoben werden
  #PB_Drag_Link: Die Daten können verlinkt werden
Der Anwender kann durch Drücken der Zusatztasten wie 'Strg' oder 'Shift' entscheiden, welche dieser Aktionen verwendet werden soll. Die Aktionen, welche tatsächlich stattfinden können, richten sich auch nach den vom Zielobjekt (englisch "drop target") erlaubten Aktionen.
(Auf MacOSX werden die Aktionen nur als ein Vorschlag übergeben. Das Zielobjekt kann immer noch eine andere Aktion auswählen.)

Rückgabewert

Gibt einen der oben genannten Drag & Drop Aktions-Werte zurück, welche die vom Anwender genutzte Aktion anzeigen, oder #PB_Drag_None wenn der Anwender die Drag & Drop Operation abgebrochen hat.

Bitte beachten Sie, dass es bei Rückgabe von #PB_Drag_Move in Ihrer Verantwortung liegt, die verschobenden Daten von Ihrer Applikation zu entfernen.

Anmerkungen

Drag & Drop kann grundsätzlich jederzeit gestartet werden, aber die linke Maustaste sollte aktuell gedrückt sein, da andernfalls die Operation umgehend und ohne Erfolg beendet wird. Der übliche Zeitpunkt zum Starten einer Drag & Drop Operation ist, wenn ein Gadget über EventType() ein Ereignis vom Typ #PB_EventType_DragStart zurückmeldet.

Siehe auch

DragText(), DragImage(), DragFiles(), DragPrivate(), SetDragCallback()

Unterstützte OS

Alle

<- DragImage() - DragDrop Inhaltsverzeichnis - DragPrivate() ->