Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Unterstruktur eines Baumes rekursiv kopieren (https://www.delphipraxis.net/154700-unterstruktur-eines-baumes-rekursiv-kopieren.html)

Grolle 21. Sep 2010 17:25

Unterstruktur eines Baumes rekursiv kopieren
 
Hallo,

ich habe folgende Procedure, die mir einen Teilbaum rekursiv kopieren und einfügen soll. Macht Sie aber nicht. Es wird nämlich alles an den targetNode gehängt und nach 10h programmieren kann ich nicht mehr denken :nerd:. Hat jemand einen Tip?:
Delphi-Quellcode:
procedure Tlft.ReadSubnodes(const inNode, targetNode : TTreeNode; childNode : boolean = false);
begin
  if assigned(inNode) then
  begin
    if childNode then
      assignmentsTree.Items.AddChild(targetNode, inNode.Text)
    else
      assignmentsTree.Items.Add(targetNode, inNode.Text);
    ReadSubnodes(inNode.GetFirstChild,targetNode,true);
    ReadSubnodes(inNode.getNextSibling,targetNode);
  end;
end;
Danke

Grolle 22. Sep 2010 07:56

AW: Unterstruktur eines Baumes rekursiv kopieren
 
Ausgeschlafen geht das wirklich besser :stupid:
Delphi-Quellcode:
procedure Tlft.ReadWriteSubnodes(inNode, targetNode : TTreeNode; active : boolean = false);
var
  newNode : TTreeNode;
begin
  while inNode <> nil do
  begin
    if inNode.HasChildren then
    begin
      newNode := assignmentsTree.Items.AddChild(targetNode,inNode.getFirstChild.Text);
      ReadSubnodes(inNode.getFirstChild,newNode,true);
    end;
    if active then
    begin
      inNode := inNode.getNextSibling;
      if inNode <> nil then
      begin
        assignmentsTree.Items.Add(targetNode,inNode.Text);
      end;
    end
      else inNode := nil;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 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