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 EndStructureWindows: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éeL'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