Child anklicken bei TreeView - Fehler



  • Hi Leute

    Ich hab ein TreeView mit Rootknoten und jeweils einer dazugehörigen Schicht Children.

    D.h. es kommen nur die Level 0 und 1 vor.
    Das habe ich überprüft. Alle Roots tragen das Level 0 und die Children tragen das Level 1

    Jetzt möchte ich beim Click auf ein Child eine bestimmte Aktion hervorrufen.

    if (TreeView1->Selected->Count > 0)
    {
       if (TreeView1->Selected->Item[0]->Level == 1)
       {
          Form1->Caption = TreeView1->Selected->Item[0]->Text;
          /*
          ...
          */
       }
    }
    

    Der Befehl "Form1->Caption" wird aber nur beim Click auf einen Root ausgeführt.
    (ungewöhnlicherweise)

    Ohne die "Selected"-Bedingung stürzt das Programm ab, bei einem Click auf ein "Child". (Was eigentlich nicht sein darf, denn wenn ich etwas anklicke, sollte mindest ein Item Selected sein...)

    alles sehr merkwürdig...

    hat jemand eine Idee woran das liegen kann?
    bin momentan ziemlich ratlos, weil das Verhalten des Programms irgendwie paradox is.

    gruß Tobi



  • Hallo

    Warum verwendest du auch die Eigenschaft Item[]? Das ist die Liste der untergeordneten Nodes. Du willst doch aber den ausgewählten Node vergleichen

    TreeView1->Selected->Level == 1
    

    Du kannst froh sein das dein Programm beim Anklicken eines Child-Nodes nicht sofort abgestürzt ist, denn deine Child-Nodes haben selber ja gar keine ungeordneten Nodes mehr.

    Und außerdem sollte doch ein entsprechender TTreeView-Event auch den ausgewählten Node direkt als Parameter übergeben?

    bis bald
    akari



  • Naja ich habe die Borland Hilfe zu "Selected" derart interpretiert, dass "Selected" mehrere Items enthalten kann, falls mehrere markiert werden.
    Da ich aber immer nur eins markiere (anklicke) dachte ich mir dass

    item[0]
    

    ausreicht.

    Dort steht das so:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      for (int i = 0; i < TreeView1->Selected->Count; i++)
        ListBox1->Items->Add(TreeView1->Selected->Item[i]->Text);
    }
    

    Ich benutze heute Ttreeview zum ersten Mal, deswegen bin ich da noch nicht so ganz durch gestiegen...

    PS: ich habe das ganze in einem OnClick-Event drin.



  • ok habe jetzt das "Treeview1Click"-Event durch ein "TreeView1Change"-Event ersetzt. Da der TreeNode mitgeliefert wird, komm ich jetzt an alle Informationen ran die ich brauch 🙂

    Erwartungsgemäß funzt es jetzt wie es soll.

    Danke fur den Hinweis 🙂

    gruß Tobi


Anmelden zum Antworten