Announcement

Collapse
No announcement yet.

TTreeView

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TTreeView

    Hallo, wie kann ich beim starten con meinem programm automatisch einen veroher definierten Item von dem TTreeView auswählen?
    <br><br>
    Danke

  • #2
    Hi,

    falls die Knoten in deinem Baumm alle vorhanden sind (nicht dynamisch nachgeladen werden) kannst du dir mit TreeView->Selected->AbsoluteIndex den Index des gerade gewählten Knoten merken.

    Mit TreeView->Items->Item[gemerkterIndex]->Selected = true, kannst du den Knoten wieder auswählen.

    Viel Spaß

    Heik

    Comment


    • #3
      Hallo zusammen.

      Wo Ihr gerade dabei seid:
      Ich versuche, aus einer DB ausgelesene Daten nach einem bestimmten Regeln in einen TV reinzusortieren. Problem ist der Index. Die Daten müssen unter drei Hauptknoten einsortiert werden. Das Auslesen erfolgt Datensatz für Datensatz in einer while-Schleife. Daher ist nicht klar, welche Regel als nächste "vor der Tür steht". Blöderweise sortiert mir die Schleife das ganze falsch. Hat jemand eine Idee?

      Danke erstmal, Markus

      Comment


      • #4
        Hi Markus,<br>
        was erwartest Du?<bR>
        Du schreibst, daß Du ein Problem mit dem Index hast<br>
        Index der DB oder Index von TV.<bR>
        Woran erkennst Du welche Regel zum Zuge kommen muß?<br>
        Es mag ja blöd klingen, aber die Schleife hast Du geschrieben, daher macht sie das was Du getippt hast.<bR>
        <br>
        Wenn Du etwas genauer beschreibst was das Problem ist, bekommst Du sicher Hilfe.<br>
        <br>
        Chri

        Comment


        • #5
          Hi Christian,

          gemeint war der Index des TV. Die Regeln sind genaugenommen Benutzergruppen. Derer sind 3 vorhanden und in der Datenbank als Bit-Wert angelegt. Im TV bildet jede Gruppe einen Knoten. Unter diesen 3 Knoten sollen dann die Benutzer angelegt werden. Und genau dieses Einsortieren will nicht so recht funken. An dieser Stelle macht mir der Index des TV einen Strich durch die Rechnung. Von VB her kenne ich die Möglichkeit, einem Knoten einen eindeutigen Schlüssel zuzuweisen. Gibt's sowas vielleicht auch unter C++?
          So, ich hoffe mal, dass mein Problem ein wenig genauer Beschrieben ist.

          Bis dahin, Markus

          Comment


          • #6
            Hi Markus,<br>
            ich glaube ich weiß wo das Problem liegt.<br>
            Wenn Du einen Knoten einfügst, ändern sich bei einem oder zwei Deiner 3 Hauptknoten die Position in der Knotenliste.<br>
            Am besten Du merkst Dir die Zeiger der 3 Hauptknoten, z.B. in einem Array.<br>
            Jeder Knoten hat die Eigenschaft HTREEITEM ItemId, ein eindeutiges Handle.<br>
            Mit GetNode(HTREEITEM) bekommst Du den Zeiger auf den Knoten zu diesem Handle.<br>
            Ich würde mir den Knoten selber merken, anstatt über das Handle zu gehen.<br>
            <br>
            Was besseres kann ich leider nicht anbieten.<br>
            <br>
            Chri

            Comment


            • #7
              Kannst du mir mal ein Beispiel code zeigen?

              dank

              Comment


              • #8
                Hi Markus!<br>

                Wenn Du selber einsortieren möchtest, so benutze<br>
                TCustomSort und schreibe Deine Sortierroutine selbst.<br>
                Bei TlistView mache ich dieses auch, und das hatten wir <br>
                hier schon im Forum. Einfach mal danach suchen.<br>
                Der Aufbau ist bei TV der selbe.<br>

                Gruß Fre

                Comment


                • #9
                  Beispiel:<br>
                  <br>
                  void __fastcall TForm1::Button3Click(TObject *Sender)<br>
                  {<br>
                  TTreeNode * MainNodes[3];<br>
                  TStringList * slValues = new TStringList();<br>
                  TStringList * slNameGroup = new TStringList();<br>
                  <br>
                  slValues->Add("Bvcx,1");<br>
                  slValues->Add("Fghj,2");<br>
                  slValues->Add("Ghjk,0");<br>
                  slValues->Add("Oiuz,2");<br>
                  slValues->Add("Asdf,0");<br>
                  slValues->Add("Trew,1");<br>
                  slValues->Add("Uztr,1");<br>
                  slValues->Add("Nbvc,2");<br>
                  <br>
                  for (int iNr=0; iNr<3; iNr++)<br>
                  {<br>
                  MainNodes[iNr] = TreeView1->Items->Add(NULL, iNr);<br>
                  }<br>
                  <br>
                  for (int iValue=slValues->Count-1; iValue>=0; iValue--)<br>
                  {<br>
                  slNameGroup->CommaText = slValues->Strings[iValue];<br>
                  AnsiString strName = slNameGroup->Strings[0];<br>
                  int iGroup = slNameGroup->Strings[1].ToInt();<br>
                  <br>
                  TreeView1->Items->AddChild(MainNodes[iGroup], strName);<br>
                  }<br>
                  <br>
                  TreeView1->SortType = stText;<br>
                  <br>
                  delete slValues;<br>
                  delete slNameGroup;<br>
                  }<br>
                  <br>
                  <br>
                  Chri

                  Comment

                  Working...
                  X