Quelque chose comme ça. Une bonne partie vient de l'exemple fourni avec l'aide
Code : Tout sélectionner
Global Window_0
Global ListIcon_0, ListIcon_1, ExplorerList_0, ListIcon_3
Procedure InitWindow_0()
Window_0 = OpenWindow(#PB_Any, 0, 0, 600, 400, "DragNDrop", #PB_Window_SystemMenu)
ListIcon_0 = ListIconGadget(#PB_Any, 34, 9, 196, 151, "Column 1", 100)
GadgetToolTip(ListIcon_0, "Insertion à la fin de la liste")
ListIcon_1 = ListIconGadget(#PB_Any, 320, 10, 210, 150, "Column 1", 100)
GadgetToolTip(ListIcon_1, "Insertion à la position de la souris")
ExplorerList_0 = ExplorerListGadget(#PB_Any, 30, 181, 200, 179, "", #PB_Explorer_MultiSelect)
GadgetToolTip(ExplorerList_0, "Sélection multiple")
ListIcon_3 = ListIconGadget(#PB_Any, 320, 180, 210, 180,"Column 1", 100)
GadgetToolTip(ListIcon_3, "Insertion à la fin de la liste de la sélection multiple")
For i=1 To 10
AddGadgetItem(ListIcon_0, -1, "aaa"+Str(i))
AddGadgetItem(ListIcon_1, -1, "zzz"+Str(i))
Next i
;Activer le drop pour le gadget voulu
EnableGadgetDrop(ListIcon_1, #PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(ListIcon_0, #PB_Drop_Text, #PB_Drag_Copy)
EnableGadgetDrop(ListIcon_3, #PB_Drop_Files, #PB_Drag_Copy)
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Gadget
;Quand on commence un drag, on a un evenement #PB_EventType_DragStart qui apparait
If EventType() = #PB_EventType_DragStart
Select EventGadget()
Case ListIcon_0
Texte$ = GetGadgetItemText(ListIcon_0, GetGadgetState(ListIcon_0))
DragText(Texte$)
Case ListIcon_1
Texte$ = GetGadgetItemText(ListIcon_1, GetGadgetState(ListIcon_0))
DragText(Texte$)
Case ExplorerList_0
Files$ = ""
For i = 0 To CountGadgetItems(ExplorerList_0)-1
If GetGadgetItemState(ExplorerList_0, i) & #PB_Explorer_Selected
Files$ + GetGadgetText(ExplorerList_0) + GetGadgetItemText(ExplorerList_0, i) + Chr(10)
EndIf
Next i
If Files$ <> ""
DragFiles(Files$)
;Debug Files$
EndIf
EndSelect
EndIf
;Quand on drop, on a un evenement #PB_Event_GadgetDrop qui apparait
Case #PB_Event_GadgetDrop
Select EventGadget()
Case ListIcon_1
;Insertion à la position de la souris
AddGadgetItem(ListIcon_1, GetGadgetState(ListIcon_1), EventDropText())
Case ListIcon_0
;Insertion à la fin de la liste
AddGadgetItem(ListIcon_0, -1, EventDropText())
Case ListIcon_3
;Insertion à la fin de la liste
Files$ = EventDropFiles()
Count = CountString(Files$, Chr(10)) + 1
For i = 1 To Count
AddGadgetItem(ListIcon_3, -1, StringField(Files$, i, Chr(10)))
Next i
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
InitWindow_0()
Repeat
event = WaitWindowEvent()
Until Window_0_Events(event) = #False