Ich habe dir mal ein Beispiel-Code gebastelt. Der ist zwar noch etwas fehlerhaft (bevor die Haken gesetzt/entfernt werden können muss erst das Item markiert werden ect.
Code: Alles auswählen
EnableExplicit
Define a, Event, ItemPos, SubLevel, ItemState
Define Pos.POINT
If Not OpenWindow(0,0,0,355,180,"TreeGadget",#PB_Window_SystemMenu | #PB_Window_ScreenCentered): End: EndIf
If Not CreateGadgetList(WindowID(0)): End: EndIf
TreeGadget(0,1,1,WindowWidth(0),WindowHeight(0),#PB_Tree_CheckBoxes)
For a = 0 To 10
AddGadgetItem(0,-1,"Node " + Str(a),0,0)
AddGadgetItem(0,-1,"Sub-Item 1",0,1)
AddGadgetItem(0,-1,"Sub-Item 1",0,2)
AddGadgetItem(0,-1,"Sub-Item 2",0,2)
AddGadgetItem(0,-1,"Sub-Item 3",0,2)
AddGadgetItem(0,-1,"Sub-Item 4",0,2)
AddGadgetItem(0,-1,"Sub-Item 2",0,1)
AddGadgetItem(0,-1,"Sub-Item 1",0,2)
AddGadgetItem(0,-1,"Sub-Item 2",0,2)
AddGadgetItem(0,-1,"Sub-Item 3",0,2)
AddGadgetItem(0,-1,"Sub-Item 4",0,2)
AddGadgetItem(0,-1,"Sub-Item 3",0,1)
AddGadgetItem(0,-1,"Sub-Item 1",0,2)
AddGadgetItem(0,-1,"Sub-Item 2",0,2)
AddGadgetItem(0,-1,"Sub-Item 3",0,2)
AddGadgetItem(0,-1,"Sub-Item 4",0,2)
AddGadgetItem(0,-1,"Sub-Item 4",0,1)
AddGadgetItem(0,-1,"Sub-Item 1",0,2)
AddGadgetItem(0,-1,"Sub-Item 2",0,2)
AddGadgetItem(0,-1,"Sub-Item 3",0,2)
AddGadgetItem(0,-1,"Sub-Item 4",0,2)
Next
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN
GetCursorPos_(@Pos)
If WindowFromPoint_(Pos\x,Pos\y) = GadgetID(0)
ItemPos = GetGadgetState(0)
SubLevel = GetGadgetItemAttribute(0,ItemPos,#PB_Tree_SubLevel)
ItemState = GetGadgetItemState(0,ItemPos)
ItemPos + 1
While ItemPos <= CountGadgetItems(0)
If GetGadgetItemAttribute(0,ItemPos,#PB_Tree_SubLevel) > SubLevel
SetGadgetItemState(0,ItemPos,ItemState)
Else
Break
EndIf
ItemPos + 1
Wend
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End