Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TreeView: Inhalt der Nodes auslesen, die keine Childs haben (https://www.delphipraxis.net/126202-treeview-inhalt-der-nodes-auslesen-die-keine-childs-haben.html)

Z4ppy 19. Dez 2008 22:50


TreeView: Inhalt der Nodes auslesen, die keine Childs haben
 
Ich hab ein TreeView und möchte die Daten derjenigen Nodes haben, die kein Child besitzen d.h. die nicht Parent eines anderen Nodes sind. Da das in Worten zu kompliziert wird, hier mal graphisch:

Code:
Node 1
- Node 1.1
  - Node 1.1.1
  - Node 1.1.2
    - Node 1.1.2.1
    - Node 1.1.2.2
- Node 1.2
In diesem Fall möchte ich die Daten von Node 1.1.1, 1.1.2.1, 1.1.2.2 und 1.2 haben.

Wie realisiere ich das?

MfG Z4ppy

omata 19. Dez 2008 23:33

Re: TreeView: Inhalt der Nodes auslesen, die keine Childs ha
 
Das Zauberwort heißt Rekursion...
Delphi-Quellcode:
procedure GetChilds(Node:TTreeNode; NodeList:TList);
var Child:TTreeNode;
begin
  if assigned(Node) then begin
    if Node.HasChildren then begin
      Child:=Node.getFirstChild;
      repeat
        GetChilds(Child, NodeList);
        Child:=Child.getNextSibling;
      until not assigned(Child);
    end
    else NodeList.Add(Node);
  end;
end;
Aufruf...
Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
var List:TList;
    i:integer;
begin
  List:=TList.Create;
  try
    GetChilds(TreeView.Items.GetFirstNode, List);
    Memo.Lines.Clear;
    for i:=1 to List.Count do
      Memo.Lines.Append(TTreeNode(List[i-1]).Text);
  finally
    List.free;
  end;
end;
Edit: Oh, es geht ja nur um den Inhalt...
Delphi-Quellcode:
procedure GetChilds(Node:TTreeNode; List:TStrings);
var Child:TTreeNode;
begin
  if assigned(Node) then begin
    if Node.HasChildren then begin
      Child:=Node.getFirstChild;
      repeat
        GetChilds(Child, List);
        Child:=Child.getNextSibling;
      until not assigned(Child);
    end
    else List.Append(Node.Text);
  end;
end;
Aufruf...
Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
begin
  GetChilds(TreeView.Items.GetFirstNode, Memo.Lines);
end;

Z4ppy 19. Dez 2008 23:42

Re: TreeView: Inhalt der Nodes auslesen, die keine Childs ha
 
Super, Danke dir :) :thumb:

MfG Z4ppy


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz