TreeView befüllen



  • Hallo Gemeinde,

    erst mal - ja, ich weiß es gibt 1 Mio Threads zu dem Thema - die habe ich aber alle durch und komme nicht weiter.
    Ich möchte ein TreeView in einer Schleife befüllen und zwar soll immer ein Hauptknoten erzeugt werden, der wiederum mehrere SubItems haben kann. Den Items möchte ich dann Icons hinzufügen, je nach dem um was es sich handelt.
    Mein Problem ist jetzt - ich kann wohl immer nur auf Knoten referenzieren wenn ich ein Item Adde. Gibt es da eine andere Möglichkeit?
    Damit sind die SubItems aber immer hinter dem vorherigen Knoten, nicht an den erzeugten Hauptknoten:

    TTreeNode *Node1;
             for (int i=0;i<5;i++)
               {
                  TreeView1->Items->Add(NULL,"Testdatum");
                   if(erg1_vorhanden == 1)
                       {
                         Node1 = TreeView1->Items->Item[i];
                         TreeView1->Items->AddChild(Node1,"Testergebnis 1");
                        }
                   if(erg2_vorhanden == 1)
                       {
                         Node1 = TreeView1->Items->Item[i];
                         TreeView1->Items->AddChild(Node1,"Testergebnis 2");
                       }
                   if(erg3_vorhanden == 1)
                       {
                         Node1 = TreeView1->Items->Item[i];
                         TreeView1->Items->AddChild(Node1,"Testergebnis 2");
                       }
               }
    

    Weiterhin möchte ich ja noch die Icons hinzufügen, das geht z.B. so:

    TreeView1->Items->Item[0]->Item[0]->Item[1]->ImageIndex=1;
    TreeView1->Items->Item[0]->Item[0]->Item[1]->SelectedIndex=1;
    

    Jedoch wäre das dann nachträglich und nicht beim Erstellen des Tree.
    Vielleicht kann mir hier jemand mal ein wenig Code zeigen wie das geht.

    Danke und Gruß
    myerscola



  • Willst du die Unterknoten an die jeweiligen Knoten der ersten Ebene hängen? AddChild übergibt einen Zeiger auf den neu gebildeten Knoten. Dann speichere doch den erzeugten Knoten in Zeile 4 in einer Variablen und verwende ihn in Zeile 8, 13, 18 statt Node1.

    TTreeNode *newNode = Tree->Items->AddChild(currNode, "tzz");
    newNode->ImageIndex = 4;
    

Log in to reply