![]() |
TTreeNode aussuchen u. weitere Knoten anhängen
Hallo,
ich habe folgendes Problem, ich will in einem TTreeView das schon nach dem Root – Knoten noch weiter Knoten aufweist. Unter diesen Kind-Konten weiter Kindknoten anhängen.
Delphi-Quellcode:
Wie gesagt die Knoten der Ebene2 sind vorhanden.
Ebene1(Root)
| |----Ebene2Knoten1 | |------------Ebene3Knoten1 | |------------Ebene3Knoten2 | |----Ebene2Knoten2 | |------------Ebene3Knoten3 | |------------Ebene3Knoten4 usw. Wenn ich jetzt die Knoten der Ebene3 einfügen möchte, so werden diese immer alle unter den letzten Knoten der Ebene2 angehängt. Mit welchem Befehl kann ich den Knoten der Ebene2 aussuchen, so dass ich darunter die Knoten der Ebene3 anhängen kann?
Delphi-Quellcode:
Damit werden die KindKnoten für die Ebene2 erzeugt
{----------------------------------------------------------------------------
Alle Datensätze Durchlaufen und die vorkommen MaGruppe1 in den Baum eintragen } for I := 1 to Anzahl do begin MSBez.MSLesen:= i; // Alle MaGruppe1 auflisten // Prüfen ob die MaGruppe1 schon im Baum vorhanden ist if m_Ebene2 = Nil then begin m_Ebene2:= TreeView1.Items.AddChild(m_Ebene1,MSBez.MaGruppe1); end else begin if (not (IsDuplicateEintrag(m_Ebene2,MSBez.MaGruppe1,TRUE))) then m_Ebene2:= TreeView1.Items.AddChild(m_Ebene1,MSBez.MaGruppe1); end; end;
Delphi-Quellcode:
Das funktioniert leider nicht.
{
Alle Datensätze durchlaufen und die MaBez an die entprechenden MaGruppe1 an- hängen. } for I := 1 to Anzahl do begin MSBez.MSLesen:= i; // Datensatz lesen for z := 0 to m_Ebene1.Count - 1 do begin if (m_Ebene1.Item[z].Text = MSBez.MaGruppe1) then begin // Items auszuchen an welcher Stelle angehängt werden soll if (NOT(IsDuplicateEintrag(m_Ebene3,MSBez.MaBez,TRUE))) then begin m_Ebene3:= TreeView1.Items.AddChild(m_Ebene2,MSBez.MaBez);<---- Das fun. nicht richtig !!!!!!!!! end; Bis bald Chemiker |
Re: TTreeNode aussuchen u. weitere Knoten anhängen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
weist du genau wo du diese Anhängen willst, oder ist das nicht statisch festgelegt? Wenn doch geht es so hier:
Delphi-Quellcode:
Im Anhang habe ich noch das dazugehörende Beispielprojekt, was dir eventuell helfen könnte.
procedure TForm1.Button1Click(Sender: TObject);
begin TreeView1.Items.AddChild(TreeView1.Items[1], 'Ebene3Knoten1'); //Ebene1 ist Item 0 TreeView1.Items.AddChild(TreeView1.Items[1], 'Ebene3Knoten2'); TreeView1.Items.AddChild(TreeView1.Items[4], 'Ebene3Knoten3'); //Knoten2 ist Item 4, da 2 neue TreeView1.Items.AddChild(TreeView1.Items[4], 'Ebene3Knoten4'); end; Gruß Mazel |
Re: TTreeNode aussuchen u. weitere Knoten anhängen
Hallo Mazel,
Vielen Dank für deine Antwort. Du hast mich auf den richtigen Weg gebracht, ich habe mich damit schon min. 20h beschäftigt. Ich wollte schon mein Notebook aus dem Fenster werfen, aber manchmal sieht man den Wald vor lauter Bäumen nicht.
Delphi-Quellcode:
Nun funktioniert alles tadellos, dank deiner Hilfe.
{
Alle Datensätze durchlaufen und die MaBez an die entprechenden MaGruppe1 an- hängen. } for I := 1 to Anzahl do begin MSBez.MSLesen:= i; // Datensatz lesen for z := 0 to m_Ebene1.Count - 1 do // Die Schleife wird solange durchlaufen bis die Anzahl der Knoten in m_Ebene1 erreicht ist begin if (m_Ebene1.Item[z].Text = MSBez.MaGruppe1) then // Prüfen zu welchen Knoten der m_Ebene1 der Unterknoten gehört. begin // Items aussuchen an welcher Stelle angehängt werden soll. if (NOT(IsDuplicateEintrag(m_Ebene3,MSBez.MaBez,TRUE))) then // Duplikat nicht eintragen begin m_Ebene3:= TreeView1.Items.AddChild(m_Ebene1.Item[z],MSBez.MaBez);//Unter den Ensprechenden Knoten der m_Ebene1 eintragen end; Bis bald Chemiker |
Re: TTreeNode aussuchen u. weitere Knoten anhängen
Freut mich, dass ich helfen konnte :)
Gruß Mazel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz