ich habe mich mal mit Drag 'n Drop beschäftigt. In diesem kleinen Beispiel wird gezeigt, wie man ein Treegadget befüllt, sortiert oder Einträge löscht.
Von der linken Liste kann man die Einträge in die rechte Liste ziehen. Man kann das gleich so machen, das die Einträge beliebig sortiert sind. Man kann sie aber auch danach durch Ziehen in der rechten Liste sortieren.
Zieht man einen Eintrag von der rechten Liste in die Linke, dann wird er einfach aus der rechten Liste entfernt.
Code: Alles auswählen
; Test Drag 'n Drop mit 2 Tree's
OpenWindow(1,30,30,500,500,"Test Drag 'n Drop",#PB_Window_TitleBar | #PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
TreeGadget(1,10,10,230,480,#PB_Tree_NoLines)
TreeGadget(2,260,10,230,480,#PB_Tree_NoLines)
EnableGadgetDrop(2,#PB_Drop_Text,#PB_Drag_Copy)
EnableGadgetDrop(1,#PB_Drop_Text,#PB_Drag_Copy)
For i = 1 To 20
AddGadgetItem(1,-1,"Eintrag " + Str(i))
Next i
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 1
If EventType() = #PB_EventType_DragStart
text.s = GetGadgetText(1)
DragText(text,#PB_Drag_Copy)
EndIf
Case 2
If EventType() = #PB_EventType_DragStart
nummer = GetGadgetState(2)
text.s = GetGadgetText(2)
flag = 1
DragText(text,#PB_Drag_Leave)
EndIf
EndSelect
EndIf
If Event = #PB_Event_GadgetDrop
Select EventGadget()
Case 1
If flag = 1
RemoveGadgetItem(2,nummer)
flag = 0
EndIf
Case 2
If flag = 0
nummer = GetGadgetState(2)
AddGadgetItem(2,nummer,text,0,0)
ElseIf flag = 1
; Gezogenen Eintrag löschen
RemoveGadgetItem(2,nummer)
; Nummer des Eintrages feststellen, an dem abgeladen wurde
nummer = GetGadgetState(2)
If nummer > -1
AddGadgetItem(2,nummer ,text,0,0)
Else
AddGadgetItem(2,-1,text,0,0)
EndIf
flag = 0
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
Torsten
Thema verschoben und Titel leicht angepaßt (ts)