<?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[Wie werde ich zur Laufzeit erzeugte Steuerelemente wieder los?]]></title><description><![CDATA[<p>Hallo,</p>
<p>zur Laufzeit erzeuge ich Buttons, speichere deren Adresse in einem Button-Feld (testBtns[][]) und setze diese Buttons auf eine ScrollBox.</p>
<p>Um die ScrollBox bei Bedarf wieder zu leeren, durchlaufe ich ihre Steuerelemente und setze deren Parent-Eigenschaft auf NULL.</p>
<pre><code class="language-cpp">for (int i = ScrollBox-&gt;ControlCount - 1; i &gt;= 0; i--)
{
    ScrollBox-&gt;Controls[i]-&gt;Parent = NULL;
}
</code></pre>
<p>Wie stelle ich es aber an, die Buttons, die ja noch im Speicher ruhen, entgültig zu löschen?</p>
<p>Anbei der Vollständigkeit halber die wesentlichen Code-Fragmente:</p>
<pre><code class="language-cpp">// === Header-Datei (*.h) === //

#define N_ZEILEN 10
#define N_SPALTEN 20

// (...) //

// Variablendeklaration
TButton* testBtns[N_ZEILEN][N_SPALTEN];

// (...) //

// === Implementations-Datei (*.cpp) === //

for (int zeile = 0; zeile &lt; N_ZEILEN; zeile++)
{
    for (int spalte = 0; spalte &lt; N_SPALTEN; spalte++)
    {
        TButton* (&amp;theButton) = testBtns[zeile][spalte];
        theButton = new TButton(this);

        // Ausrichtung
        theButton-&gt;SetBounds(..., ..., ..., ...);

        // Beschriftung
        theButton-&gt;Caption = AnsiString(&quot;(&quot;) + zeile +  &quot; | &quot; + spalte + &quot;)&quot;;

        // Parent
        theButton-&gt;Parent = ScrollBox;

    } // for spalte
} // for zeile
</code></pre>
<p>Gruß<br />
Leo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/92800/wie-werde-ich-zur-laufzeit-erzeugte-steuerelemente-wieder-los</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 09:35:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/92800.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Nov 2004 14:23:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie werde ich zur Laufzeit erzeugte Steuerelemente wieder los? on Tue, 23 Nov 2004 14:23:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>zur Laufzeit erzeuge ich Buttons, speichere deren Adresse in einem Button-Feld (testBtns[][]) und setze diese Buttons auf eine ScrollBox.</p>
<p>Um die ScrollBox bei Bedarf wieder zu leeren, durchlaufe ich ihre Steuerelemente und setze deren Parent-Eigenschaft auf NULL.</p>
<pre><code class="language-cpp">for (int i = ScrollBox-&gt;ControlCount - 1; i &gt;= 0; i--)
{
    ScrollBox-&gt;Controls[i]-&gt;Parent = NULL;
}
</code></pre>
<p>Wie stelle ich es aber an, die Buttons, die ja noch im Speicher ruhen, entgültig zu löschen?</p>
<p>Anbei der Vollständigkeit halber die wesentlichen Code-Fragmente:</p>
<pre><code class="language-cpp">// === Header-Datei (*.h) === //

#define N_ZEILEN 10
#define N_SPALTEN 20

// (...) //

// Variablendeklaration
TButton* testBtns[N_ZEILEN][N_SPALTEN];

// (...) //

// === Implementations-Datei (*.cpp) === //

for (int zeile = 0; zeile &lt; N_ZEILEN; zeile++)
{
    for (int spalte = 0; spalte &lt; N_SPALTEN; spalte++)
    {
        TButton* (&amp;theButton) = testBtns[zeile][spalte];
        theButton = new TButton(this);

        // Ausrichtung
        theButton-&gt;SetBounds(..., ..., ..., ...);

        // Beschriftung
        theButton-&gt;Caption = AnsiString(&quot;(&quot;) + zeile +  &quot; | &quot; + spalte + &quot;)&quot;;

        // Parent
        theButton-&gt;Parent = ScrollBox;

    } // for spalte
} // for zeile
</code></pre>
<p>Gruß<br />
Leo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/657251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/657251</guid><dc:creator><![CDATA[Leo Freitag]]></dc:creator><pubDate>Tue, 23 Nov 2004 14:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wie werde ich zur Laufzeit erzeugte Steuerelemente wieder los? on Tue, 23 Nov 2004 15:22:53 GMT]]></title><description><![CDATA[<p>normal löscht mal alles mit <em>new</em> erstellte durch <em>delete</em><br />
da du aber <em>this</em> an de konstruktor übergibts glaube ich das die Komponente auf die <em>this</em> zeigt das übernimmt, bin mir aber nicht sicher.</p>
<p>wenn du also die buttons selber löschen willst übergib NULL und lösch se dann mit delete.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/657335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/657335</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Tue, 23 Nov 2004 15:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wie werde ich zur Laufzeit erzeugte Steuerelemente wieder los? on Wed, 24 Nov 2004 11:54:17 GMT]]></title><description><![CDATA[<p>Beliah schrieb:</p>
<blockquote>
<p>&lt;Edit: Zitate auf das Notwendigste beschränken. Danke!&gt;</p>
</blockquote>
<p>Die Sache mit 'this' klingt interessant. Kann das jemand noch etwas genauer erklären?</p>
<p>Auch wundere ich mich über die Art der Zuweisung in der ersten Zeile:</p>
<pre><code class="language-cpp">TButton* (&amp;theButton) = testBtns[zeile][spalte];
theButton = new TButton(this);
</code></pre>
<p>Hier wird doch offensichtlich die Adresse von theButton dem Feld testBtns[][] zugewiesen.<br />
Wieso wird hier von links nach rechts zugewiesen und nicht wie sonst üblich?</p>
<p>Gruß<br />
Leo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/657789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/657789</guid><dc:creator><![CDATA[Leo Freitag]]></dc:creator><pubDate>Wed, 24 Nov 2004 11:54:17 GMT</pubDate></item></channel></rss>