TreeGadget ganz entfalten - geht`s echt nur so?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

TreeGadget ganz entfalten - geht`s echt nur so?

Beitrag 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 :)
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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?^^
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag 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
Antworten