Frage zu TTreeView



  • Guten Morgen.

    Ich möchte ein TreeView durchlaufen und analyisieren.

    for (int i=0;i<TreeView->Items->Count;i++)
    {
        Memo1->Lines->Add(TreeView->Items->Item[i]->Text);
    }
    

    Diese Methode ist für mich.., nunja unpraktisch.

    knoten1
    - string1
    - string2
    - string3
    knoten2
    - string1
    - string2
    - string3
    string3
    - text1
    - text2
    string3
    - text100
    - text100

    Ich möchte gern gezielt in einer Ebene (knoten1, knoten2, string3, string3) durchgehen und auch sagen können das beispielsweise den Node haben möchte, wo das erste mal string3 auftritt.

    Wenn ich diesen habe, möche ich gerne nur in diesem Node nach einem Untereintrag suchen und auch dort sagen können der 1 oder 2 Eintrag mit diesem Namen für mich Relevant ist.

    Meine Frage ist nun wie kann man gezielt Ebenen durchgehen und wie erfahre ich wieviele Untereinträge dieser Knoten hat und wie gehe ich diese durch?

    Leider habe ich damit meine Probleme und wäre sehr nett wenn jemand diesbezüglich mir weiterhelfen könnte.



  • Hallo

    siehe TTreeNode::GetNextChild/TTreeNode::GetNextSibling.

    bis bald
    akari



  • Also ich starte mit GetFirstNode und gehe dann mit getNextSibling auf gleicher Ebene durch und wenn ich auf einen Eintrag Treffe, wessen Unterknoten ich analysieren möchte, so nehm ich GetNextChild.

    Jedoch genau so klappt das leider nicht 😃

    TTreeNode *CurItem = TrvDoc->Items->GetFirstNode();
        while (CurItem)
        {
            if (CurItem->Text=="SUCHTEXT")
            {
                // Ausgabe in ein TMemo
                Memo1->Lines->Add(CurItem->Text);
    
                // Deren Unterpunkte ausgeben
                CurItem = CurItem->GetNextChild(CurItem);
                while (CurItem)
                {
                    CurItem = CurItem->getNextSibling();
                    Memo1->Lines->Add(CurItem->Text);
                }
    
                // Abbruch, da nur dieser Punkt bearbeitet werden sollte
                break;
            }
    
            // nächsten suchen, auf selben Ebene
            CurItem = CurItem->getNextSibling();
        }
    

    Sieht jemand vielleicht den Fehler und kann ihn erklären? Habe schon mehreres durchgespielt, leider ohne Erfolg.


Anmelden zum Antworten