Bonjour tout le monde,
Je sollicite une fois de plus votre aide car je ne comprends rien au "drag’n drop" interne entre deux listicongadget().
Voila ce que donne pour le moment mon programme http://www.koakdesign.info/nav3/nav3explorer.exe
Si quelqu’un peu m’expliqué comment je peux faire pour pouvoir envoyé une info d’un coté et de l’autre entre deux listicongadget(), je suis vraiment preneur.
Cordialement et merci d'avance,
GallyHC
drag’n drop entre deux listicongadget().
drag’n drop entre deux listicongadget().
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: drag’n drop entre deux listicongadget().
Quelque chose comme ça. Une bonne partie vient de l'exemple fourni avec l'aide
:
Mesa

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
Re: drag’n drop entre deux listicongadget().
Et j'ajouterai que la procédure est casi similaire pour gérer le DnD sur une fenêtre ET sur un gadget en particulier.
DnD sur fenêtre = action A
DnD sur 1 gadget particulier de la fenêtre = Action B
Tout est (toujours) question d'Event
DnD sur fenêtre = action A
DnD sur 1 gadget particulier de la fenêtre = Action B
Tout est (toujours) question d'Event

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: drag’n drop entre deux listicongadget().
Bonjour,
Mesa> Merci pour ton exemple, je viens de comprendre en analysant ton code. En gros c'est a nous a généré le "Drag", ce qui parait normal en fait
.
Ar-s> Je prend note.
Cordialement,
GallyHC
Mesa> Merci pour ton exemple, je viens de comprendre en analysant ton code. En gros c'est a nous a généré le "Drag", ce qui parait normal en fait

Ar-s> Je prend note.
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)