Seite 1 von 1

Verfasst: 14.07.2008 09:24
von Shardik
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