Es gibt allerdings (sogar mit PB-Bordmitteln) die Möglichkeit, alle Einträge nur bis zu einer bestimmten Unterebene ausklappen zu lassen, indem man beim Durchgehen der einzelnen TreeView-Einträge mit GetGadgetItemAttribute() und #PB_Tree_SubLevel die Unterebene (SubLevel) des jeweiligen Eintrags abfragt und nur die Knoten bis zu dem gewünschten SubLevel aufklappen läßt:
Code: Alles auswählen
Procedure TreeViewExpandSubLevel(GadgetID.L, SubLevelToExpand.L)
For i = 0 To CountGadgetItems(GadgetID) - 1
If GetGadgetItemAttribute(GadgetID, i, #PB_Tree_SubLevel) <= SubLevelToExpand
SetGadgetItemState(GadgetID, i, #PB_Tree_Expanded)
EndIf
Next i
EndProcedure
If OpenWindow(0, 0, 0, 250, 240, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TreeGadget(0, 10, 10, 230, 220)
For i = 1 To 2
AddGadgetItem (0, -1, "Eintrag " + Str(i), 0, 0)
AddGadgetItem(0, -1, "Eintrag " + Str(i) + ".1", 0, 1)
AddGadgetItem(0, -1, "Eintrag " + Str(i) + ".1.1", 0, 2)
AddGadgetItem(0, -1, "Eintrag " + Str(i) + ".2.1", 0, 2)
AddGadgetItem(0, -1, "Eintrag " + Str(i) + ".2.1.1", 0, 3)
AddGadgetItem(0, -1, "Eintrag " + Str(i) + ".2", 0, 1)
AddGadgetItem(0, -1, "Eintrag " + Str(i) + ".3", 0, 1)
Next i
TreeViewExpandSubLevel(0, 1)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf