DragImage()

Syntaxe

Resultat = DragImage(ImageID [, Actions])
Description
Lance une opération de 'Drag & Drop' en utilisant une donnée de type image.

Arguments

ImageID L'image à transférer.

ImageID() peut être utilisé pour obtenir cet identifiant.
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: L'image peut être copiée
  #PB_Drag_Move: L'image peut être déplacée
  #PB_Drag_Link: L'image 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é, l'image 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.

Sous MacOS X, l'évènement #PB_EventType_DragStart doit être géré à l'aide de BindEvent() ou de BindGadgetEvent().

Exemple

  ; Glissez une image vers une application qui les accepte comme une application de bureau ou un programme graphique.
  ;
  If LoadImage(1, #PB_Compiler_Home + "examples/sources/data/PureBasicLogo.bmp")
    If OpenWindow(1, 200, 200, 400, 90, "Drag & Drop", #PB_Window_SystemMenu)
      ImageGadget(1, 10, 10, 380, 70, ImageID(1))
    
      Repeat
        Event = WaitWindowEvent()      
        If Event = #PB_Event_Gadget And EventGadget() = 1 And EventType() = #PB_EventType_DragStart
          DragImage(ImageID(1))
        EndIf      
      Until Event = #PB_Event_CloseWindow
    EndIf
  EndIf

Exemple

  Enumeration ; Gadgets
    #Liste1
    #Liste2
  EndEnumeration
  
  If OpenWindow(0, 0, 0, 415, 410, "Drag depuis Liste 1 vers Liste 2", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ListIconGadget(#Liste1, 5, 5, 200, 400, "Liste 1" , 140)
    ListIconGadget(#Liste2, 210, 5, 200, 400, "Liste 2" , 140)
    
    For i = 0 To 9
      AddGadgetItem(#Liste1, -1, "Item " + Str(i))
      AddGadgetItem(#Liste2, -1, "Item " + Str(i + 10))
    Next
    
    ; Permet de faire glisser un élément depuis #Liste1 vers #Liste2
    EnableGadgetDrop(#Liste2, #PB_Drop_Private, #PB_Drag_Copy, 1)
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_GadgetDrop ; L'événement drag
          Select EventGadget()
            Case #Liste2
              Select EventDropType()
                Case #PB_Drop_Private
                  tmp = GetGadgetState(#Liste2)
                  AddGadgetItem(#Liste2, tmp, tmp$)
                  tmp = GetGadgetState(#Liste1)
                  RemoveGadgetItem(#Liste1, tmp)
              EndSelect
          EndSelect
        Case #PB_Event_Gadget
          Select EventGadget()
            Case #Liste1
              Select EventType()
                Case #PB_EventType_DragStart
                  tmp = GetGadgetState(#Liste1)
                  If tmp <> -1
                    tmp$ = GetGadgetItemText(#Liste1, tmp)
                    DragPrivate(1) ; Définir le type de glisser-déposer sur 1 jusqu'à ce que l'action de dépôt réussisse (dans #Liste2).
                  EndIf
              EndSelect
          EndSelect
        Case #PB_Event_CloseWindow
          End
      EndSelect
    ForEver
  EndIf

Voir aussi

DragFiles(), DragText(), DragPrivate(), DragOSFormats(), SetDragCallback()

OS Supportés

Tous

<- DragFiles() - DragDrop Index - DragOSFormats() ->