![]() |
TreeView: TreeNode -> untergeordneter Eintrag
Hoi?,
und gleich wieder eine Frage: Ich hab ein TreeView auf meiner Form. Jetzt möcht ich da Items reinstopfen. Das ist kein Problem.
Code:
^^ So sieht das dann aus.
Kategorie1
Ketegorie2 Wie schaffe ich aber das es auch so geht:
Code:
Kategorie1
+ Untereintrag <- Das hinzufügen + Untereintrag <- Das hinzufügen Ketegorie2 . . . |
Re: TreeView: TreeNode -> untergeordneter Eintrag
Hai Spider,
das Problem hatte ich bei meiner Code-Library auch ;-) Wo gibst Du denn an zu welcher Kategrie ein Untereintrag gehört? |
Re: TreeView: TreeNode -> untergeordneter Eintrag
Delphi-Quellcode:
var LNode: TTreeNode;
begin LNode := Treeview1.Items.Add(TreeView1.Items.GetFirstNode, 'Kategorie1'); TreeView1.Items.AddChild(LNode, 'Untereintrag1'); TreeView1.Items.AddChild(LNode, 'Untereintrag2'); |
Re: TreeView: TreeNode -> untergeordneter Eintrag
@Sharky
wie meinst? @Sir noch nicht ganz. Die Kategorie ist schon erzeugt. Unter diese Kategorie soll nun ein Eintrag. Das steht schon da:
Code:
und jetzt kann man zu jeder Kategorie noch einen Untereintrag machen können.
Kategorie1
Kategorie2 |
Re: TreeView: TreeNode -> untergeordneter Eintrag
Vielleicht so?
Delphi-Quellcode:
var
i: Word; Node: TTreeNode; begin Assert(TreeView1.Items.Count > 0); with TreeView1 do begin Node := Items[0]; repeat Items.AddChild(Node, 'Untereintrag'); Node := Node.GetNextSibling until Node = nil; end; |
Re: TreeView: TreeNode -> untergeordneter Eintrag
Zitat:
Aber die Frage bleibt: Wo/Wie wird in deinem Programm festgelegt zu welcher Kategorie ein neuer Eintrag gehört? |
Re: TreeView: TreeNode -> untergeordneter Eintrag
Delphi-Quellcode:
Aufruf:
function FindRootNode(ACaption: String; ATreeView: TTreeView): TTreeNode;
var LCount: Integer; begin result := nil; LCount := 0; while (LCount < ATreeView.Items.Count) and (result = nil) do begin if (ATreeView.Items.Item[LCount].Text = ACaption) and (ATreeView.Items.Item[LCount].Parent = nil) then result := ATreeView.Items.Item[LCount]; inc(LCount); end; end;
Delphi-Quellcode:
[Edit2]Um allen Kritiken gerecht zu werden zur Funktion umgebaut[/Edit2]
var LDestNode: TTreeNode;
begin LDestNode := FindRootNode('Kategorie1', TreeView1); if LDestNode <> nil then begin TreeView1.Items.AddChild(LDestNode, 'Untereintrag1'); TreeView1.Items.AddChild(LDestNode, 'Untereintrag1'); end; end; |
Re: TreeView: TreeNode -> untergeordneter Eintrag
@Sir
so ists perfect! |
Re: TreeView: TreeNode -> untergeordneter Eintrag
@SirThornberry: Der Ansatz mit einer for-Schleife kann nicht funktionieren, da sich beim
Hinzufügen von Items die Item-Zahl erhöht aber TreeView1.Items.Count konstant bleibt, da's nur einmal aufgerufen wird. Dein Code fügt nur Kategorie1 etwas hinzu, nicht aber Ketegorie2 (auch wenn Ketegorie2 Kategorie1 heissen würde) |
Re: TreeView: TreeNode -> untergeordneter Eintrag
Wenn Du jetzt nach dem hinzufügen der Untereinträge noch ein break; machst wird die Schleife nicht unnötig weiter durchlaufen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 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