Seite 1 von 1

TreeGadget ganz entfalten - geht`s echt nur so?

Verfasst: 13.07.2008 20:39
von Franky
Hi Leute, ich bin grad etwas verwirrt. :?

Ich wollte mir in ein Treegadget Daten einlesen (Dateien und Resourcen), die dann aber direkt angezeigt werden sollen, sprich der gesamte Baum soll entfaltet dargestellt werden (expandet)

Ich hab dazu aber keinerlei alternative Funktion gefunden, geht das echt nur "per Hand", also so?

Code: Alles auswählen

Procedure ExpandTreeGadget(gadget.l)
    For a=1 To CountGadgetItems(gadget)
            SetGadgetItemState(gadget,a-1,#PB_Tree_Expanded)
    Next
EndProcedure
Mfg Franky :)

Verfasst: 14.07.2008 08:20
von RSBasic
So mache ich das auch immer :wink:
Ob es vielleicht ein extra API-Befehl gibt, kA
Aber ein PB-Befehl für "Alles entfalten" gibt es nicht.
Also wo ist das Problem?^^

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