DragOSFormats()

Syntaxe

Resultat = DragOSFormats(Formats(), NbFormats [, Actions])
Description
Lance une opération de 'Drag & Drop' avec une liste de formats propre au système d'exploitation. Ceci permet de supporter des formats de données qui ne sont pas nativement gérés par PureBasic tout en gardant la simplicité d'utilisation fournie par cette bibliothèque.

Arguments

Formats() Est un tableau de structures 'DragDataFormat' contenant un ou plusieurs formats à gérer.
  Structure DragDataFormat
    Format.i    ; L'identifant de l'OS concernant le format (voir ci-dessous)
   *Buffer      ; La zone mémoire contenant la donnée dans ce format
    Size.i      ; La taille de la zone mémoire
  EndStructure
Windows:
Sous Windows, le champ 'Format' est une valeur de type 'CLIPBOARDFORMAT'. Ce peut être n'importe quel format standard (voir le SDK Windows), ou un format enregistré avec l'API RegisterClipboardFormat_().
Linux:
Sous Linux, le champ 'Format' est une valeur de type 'GdkAtom'. Il peut être créé avec la fonction gdk_atom_intern_(). Les "atomes" sont généralement assimilés à des types mime usuels (i.e "text/html" pour des données HTML). L'atome peut aussi être créé avec n'importe quelle chaîne capable d'être correctement interprétée par l'application cible.
MacOSX:
Sur MacOSX, le champ 'Format' précise un type pour le contenu du presse-papier via le "scrap manager" ( le gestionnaire du presse-papier). Il possède quatre caractères alphanumériques constants, 'TEXT' par exemple. Il y a un certain nombre de types prédéfinis, mais on peut également utiliser des valeurs personnalisées à condition que le programme cible puisse les interpréter correctement.
NbFormats Le nombre de formats dans le tableau.
Si plusieurs formats sont transférés, l'application cible acceptera le premier qu'elle reconnaîtra. Le format qui fournit le plus d'informations (donc qui représente le plus fidèlement la donnée) doit être le premier dans le tableau, suivi par les autres qui sont de moins en moins précis. De cette façon, chaque application recevra la meilleure réprésentation de la donnée, en fonction de ce qu'elle sait interpréter.
Actions (optionnel) Si ce paramètre est omis, #PB_Drag_Copy sera utilisé comme valeur par défaut. Peut être une combinaison de:
  #PB_Drag_Copy: La donnée peut être copiée
  #PB_Drag_Move: La donnée peut être déplacée
  #PB_Drag_Link: La donnée peut être liée
L'utilisateur peut décider de l'action à prendre en utilisant les touches Ctrl ou Shift. Les actions disponibles dépendent aussi du composant sur lequel le texte va être déposé. (Sous MacOSX, les actions ne sont traitées que comme une suggestion. La cible de dépôt peut encore choisir une autre action.)

Valeur de retour

Renvoie une des valeurs 'Actions' pour indiquer laquelle a été choisie par l'utilisateur, ou #PB_Drag_None si le 'Drag & Drop' a été annulé.

Note: si #PB_Drag_Move est renvoyé, la donnée déposée ne sera pas automatiquement effacée de l'application PureBasic. Il faudra le faire en réponse à ce message.

Remarques

Un 'Drag & Drop' peut être démarré n'importe quand, mais il faut que le bouton gauche de la souris soit appuyé sinon l'opération se terminera immédiatement. Le moment le plus approprié pour lancer un 'Drag & Drop' est en réponse à un évènement sur un Gadget avec un EventType() valant #PB_EventType_DragStart.

Voir aussi

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

OS Supportés

Tous

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