gnozal hat in einem Posting im englischen Forum u.a. eine Prozedur TreeViewExpandAll() eingebaut (
http://www.purebasic.fr/english/viewtop ... 39&start=1), die mit Windows-API im Prinzip das gleiche macht, wie die von Franky gezeigte Prozedur. Mir ist im Moment daher kein "eleganterer" Weg bekannt, alle Untereinträge ausklappen zu lassen...
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