since it was not easy for me to figure it out, I thought it is a good idea
to share my result:
Code: Select all
Procedure ListIconGadgetMove(GadgetNo.i, Source.i, Dest.i)
Source$ = GetGadgetItemText(GadgetNo, Source)
If Source < Dest
For i = Source To Dest - 1
Help$ = GetGadgetItemText(GadgetNo, i + 1)
SetGadgetItemText(GadgetNo, i, Help$)
Next i
Else
For i = Source To Dest + 1 Step - 1
Help$ = GetGadgetItemText(GadgetNo, i - 1)
SetGadgetItemText(GadgetNo, i, Help$)
Next i
EndIf
SetGadgetItemText(GadgetNo, i, Source$)
EndProcedure
OpenWindow(0, 0, 0, 330, 220, "Drag'n drop test", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, 310, 200, "Test", 300 , #PB_ListIcon_FullRowSelect|#PB_ListIcon_HeaderDragDrop)
For i = 1 To 10
AddGadgetItem(0, -1, "Line " + Str(i))
Next i
EnableGadgetDrop(0, #PB_Drop_Private, #PB_Drag_Move, 1)
Exit = #False
DragItem = -1
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventType()
Case #PB_EventType_DragStart
DragItem = GetGadgetState(0)
DragPrivate(1, #PB_Drag_Move)
EndSelect
Case #PB_Event_GadgetDrop
If EventDropPrivate() = 1
TargetItem = GetGadgetState(0)
ListIconGadgetMove(0, DragItem, TargetItem)
EndIf
Case #PB_Event_CloseWindow
Exit = #True
EndSelect
Until Exit
Oh, what it does:
You can move the entries with the mouse and left mouse button pressed.

Best regards,
Bernd