<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TTreeView, resp. Baum richtig darstellen]]></title><description><![CDATA[<p>Hallo,</p>
<p>für eine MiniApplikation will ich eine XML-Dokument-Struktur in einem TreeView darstellen. <em>Weitesgehend</em> funktioniert alles, nur wird der Baum derzeit wie folgt dargestellt:<br />
**<br />
+ [root]<br />
....+ [node1]<br />
........+ [node1.1]<br />
............- [leaf1.1]<br />
............- [leaf1.2]<br />
............- [leaf3.1]<br />
............- [leaf3.2]<br />
............- [leaf3.3]<br />
........- [node1.2]<br />
........- [node3.1]<br />
........- [node3.2]<br />
........- [node3.3]<br />
....- [node2]<br />
....- [node3]**</p>
<p>sollte aber so sein:</p>
<p>**<br />
+ [root]<br />
....+ [node1]<br />
........+ [node1.1]<br />
............- [leaf1.1]<br />
........+ [node1.2]<br />
............- [leaf1.2]<br />
....- [node2]<br />
....+ [node3]<br />
........+ [node3.1]<br />
............- [leaf3.1]<br />
........+ [node3.2]<br />
............- [leaf3.2]<br />
........+ [node3.3]<br />
............- [leaf3.3]**</p>
<p>Hier noch der zugehörige Code:</p>
<pre><code class="language-cpp">// @param root: (next) parent node from XML Tree
// @param next: depth level of tree
// returns number of added elements
int TForm1::ShowXMLTree(XMLNode root, TTreeNode* next)
{
        static int counter=1;           // very first node already added

        XMLNodeList list=root-&gt;GetChildNodes();
        for (int i=0; i&lt;list-&gt;Count; i++)
        {
                root=list-&gt;Get(i);
                String rootNodename=root-&gt;GetNodeName();

                if(rootNodename[1]!='#')
                {
                         // XMLDocTree is TreeView-Object
                         XMLDocTree-&gt;Items-&gt;AddChild(next,rootNodename);
                         counter++;
                }
                if (root-&gt;HasChildNodes)
                        ShowXMLTree(root, next-&gt;GetNext());

        }
        return counter;
}
</code></pre>
<p>Ich tu mich immer ein wenig schwer mit Rekursion <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Vielleicht hat ja jemand den Durchblick, wie das Prob zu lösen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/84753/ttreeview-resp-baum-richtig-darstellen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 23:48:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/84753.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Sep 2004 10:05:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TTreeView, resp. Baum richtig darstellen on Thu, 02 Sep 2004 10:05:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>für eine MiniApplikation will ich eine XML-Dokument-Struktur in einem TreeView darstellen. <em>Weitesgehend</em> funktioniert alles, nur wird der Baum derzeit wie folgt dargestellt:<br />
**<br />
+ [root]<br />
....+ [node1]<br />
........+ [node1.1]<br />
............- [leaf1.1]<br />
............- [leaf1.2]<br />
............- [leaf3.1]<br />
............- [leaf3.2]<br />
............- [leaf3.3]<br />
........- [node1.2]<br />
........- [node3.1]<br />
........- [node3.2]<br />
........- [node3.3]<br />
....- [node2]<br />
....- [node3]**</p>
<p>sollte aber so sein:</p>
<p>**<br />
+ [root]<br />
....+ [node1]<br />
........+ [node1.1]<br />
............- [leaf1.1]<br />
........+ [node1.2]<br />
............- [leaf1.2]<br />
....- [node2]<br />
....+ [node3]<br />
........+ [node3.1]<br />
............- [leaf3.1]<br />
........+ [node3.2]<br />
............- [leaf3.2]<br />
........+ [node3.3]<br />
............- [leaf3.3]**</p>
<p>Hier noch der zugehörige Code:</p>
<pre><code class="language-cpp">// @param root: (next) parent node from XML Tree
// @param next: depth level of tree
// returns number of added elements
int TForm1::ShowXMLTree(XMLNode root, TTreeNode* next)
{
        static int counter=1;           // very first node already added

        XMLNodeList list=root-&gt;GetChildNodes();
        for (int i=0; i&lt;list-&gt;Count; i++)
        {
                root=list-&gt;Get(i);
                String rootNodename=root-&gt;GetNodeName();

                if(rootNodename[1]!='#')
                {
                         // XMLDocTree is TreeView-Object
                         XMLDocTree-&gt;Items-&gt;AddChild(next,rootNodename);
                         counter++;
                }
                if (root-&gt;HasChildNodes)
                        ShowXMLTree(root, next-&gt;GetNext());

        }
        return counter;
}
</code></pre>
<p>Ich tu mich immer ein wenig schwer mit Rekursion <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Vielleicht hat ja jemand den Durchblick, wie das Prob zu lösen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/597638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597638</guid><dc:creator><![CDATA[PosSeX]]></dc:creator><pubDate>Thu, 02 Sep 2004 10:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to TTreeView, resp. Baum richtig darstellen on Mon, 31 Jan 2005 12:39:25 GMT]]></title><description><![CDATA[<p>Nach längerer Zeit bin ich wieder über das o.a. Problem gestolpert, bzw. die damalige Übung findet nun einen praktischen Nutzen.<br />
Nachdem ich den Vormittag darüber nachgegrübelt, gemacht, getan und probiert habe, bin ich auf einen kleinen und feinen Denkfehler gestoßen.<br />
Hier nun die LÖsung für alle, die's interessiert:</p>
<pre><code class="language-cpp">// @param root: (next) parent node from XML Tree
// @param next: &quot;depth level&quot; of TTree
// returns number of added elements
int TForm1::ShowXMLTree(XMLNode root, TTreeNode* next)
{
        XMLTreeData* myDataPtr;
        TTreeNode * lastAdded;

        XMLNodeList list=root-&gt;GetChildNodes();
        for (int i=0; i&lt;list-&gt;Count; i++)
        {
                root=list-&gt;Get(i);         // next node
                String rootNodename=root-&gt;GetNodeName();

                if(rootNodename[1]!='#')
                {
                        myDataPtr= new XMLTreeData;   
                        myDataPtr-&gt;xmlNode=root;
                       lastAdded=XMLDocTree-&gt;Items-&gt;AddChildObject(next,rootNodename,myDataPtr);
                        Counter++;
                }
                if (root-&gt;HasChildNodes)
                       ShowXMLTree(root, lastAdded);

        }
        return Counter;
}
</code></pre>
<p>Wichtig ist es, den zuletzt eingefügten Knoten im erneuten ShowXMLTree-Aufruf<br />
zu übergeben, dann klappt's auch mit dem Nachbarn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/711103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/711103</guid><dc:creator><![CDATA[PosSeX]]></dc:creator><pubDate>Mon, 31 Jan 2005 12:39:25 GMT</pubDate></item></channel></rss>