Sauf mauvaise compréhension de la procédure GetParentTree(), un code pour illustrer mon doute précédent.
Essaye de glisser des éléments de la liste vers l'arbre.
Le parent renvoyé par la procédure GetParentTree() est systématiquement "Intro".
Code : Tout sélectionner
EnableExplicit
Enumeration
#mf
#mflist
#mftree
EndEnumeration
Procedure GetParentTree(Parent,Id,TreeId)
Protected Niv,N
For N=Id To 0 Step -1
Niv=GetGadgetItemAttribute(TreeId, N, #PB_Tree_SubLevel)
If Niv=Parent
ProcedureReturn N
EndIf
Next
EndProcedure
Procedure OnDrag()
Protected Files.s = ""
Protected n
For n = 0 To CountGadgetItems(#mflist)-1
If GetGadgetItemState(#mflist, n) & #PB_Explorer_Selected
Files + GetGadgetText(#mflist) + GetGadgetItemText(#mflist, n) + Chr(10)
EndIf
Next
If Files <> ""
DragFiles(Files)
EndIf
EndProcedure
Procedure OnDrop()
Protected n
Protected Index = GetGadgetState(#mftree)
Protected Parent.s = GetGadgetItemText(#mftree, GetParentTree(0, Index, #mftree))
Protected Files.s = EventDropFiles()
Debug parent
If Parent <> "Intro"
For n = 0 To CountString(Files, Chr(10))
Debug StringField(Files, n+1, Chr(10))
AddGadgetItem(#mftree, Index+1 , StringField(Files, n+1, Chr(10)), 0, 3)
Next
SetGadgetItemState(#mftree, Index, #PB_Tree_Expanded)
EndIf
EndProcedure
OpenWindow(#mf, 0, 0, 800, 600, "test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ExplorerListGadget(#mflist, 10, 10, 300, 580, GetHomeDirectory(), #PB_Explorer_MultiSelect)
TreeGadget(#mftree, 400, 10, 390, 580)
AddGadgetItem(#mftree, -1, "Intro") ;Item 0
AddGadgetItem(#mftree, -1, "Preload", 0, 1) ;Item 1
AddGadgetItem(#mftree, -1, "Image", 0, 2)
AddGadgetItem(#mftree, -1, "Sprite", 0, 2)
AddGadgetItem(#mftree, -1, "Sound", 0, 2)
AddGadgetItem(#mftree, -1, "Create", 0, 1) ;Item 5
AddGadgetItem(#mftree, -1, "Image", 0, 2)
AddGadgetItem(#mftree, -1, "Sprite", 0, 2)
AddGadgetItem(#mftree, -1, "Sound", 0, 2)
SetGadgetItemState(#mftree, 0, #PB_Tree_Expanded)
SetGadgetItemState(#mftree, 1, #PB_Tree_Expanded)
SetGadgetItemState(#mftree, 5, #PB_Tree_Expanded)
EnableGadgetDrop(#mftree, #PB_Drop_Files, #PB_Drag_Copy)
BindGadgetEvent(#mflist, @OnDrag(), #PB_EventType_DragStart)
BindEvent(#PB_Event_GadgetDrop, @OnDrop(), #mf, #mftree)
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend