<?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[Komponentenmanipulation über Index]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich such' mir mal wieder nen Wolf für ein recht einfaches Problem: Ich habe 16 CheckBox-Komponenten auf einem Formular. Jetzt wollte ich in einer Schleife abfragen, ob diese &quot;checked&quot; sind und dann jeweils eine zugehörige Edit-Komponente manipulieren. Ich finde nur leider keinen Hinweis, wie ich die Komponenten indiziert manipuliere...</p>
<p>So in der Art hatte ich mir das gedacht:</p>
<pre><code class="language-cpp">for(i=0; i&lt;=15; i++)
{
    if(CheckBox[i]-&gt;Checked==true)
        Edit[i]-&gt;Text= &quot;blablubb&quot;;
    else
        Edit[i]-&gt;Text= &quot;bliblobb&quot;;
}
</code></pre>
<p>Weiß da vielleicht jemand eine Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197669/komponentenmanipulation-über-index</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 15:51:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197669.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Nov 2007 12:27:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Tue, 13 Nov 2007 12:27:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich such' mir mal wieder nen Wolf für ein recht einfaches Problem: Ich habe 16 CheckBox-Komponenten auf einem Formular. Jetzt wollte ich in einer Schleife abfragen, ob diese &quot;checked&quot; sind und dann jeweils eine zugehörige Edit-Komponente manipulieren. Ich finde nur leider keinen Hinweis, wie ich die Komponenten indiziert manipuliere...</p>
<p>So in der Art hatte ich mir das gedacht:</p>
<pre><code class="language-cpp">for(i=0; i&lt;=15; i++)
{
    if(CheckBox[i]-&gt;Checked==true)
        Edit[i]-&gt;Text= &quot;blablubb&quot;;
    else
        Edit[i]-&gt;Text= &quot;bliblobb&quot;;
}
</code></pre>
<p>Weiß da vielleicht jemand eine Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402443</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Tue, 13 Nov 2007 12:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Tue, 13 Nov 2007 13:16:23 GMT]]></title><description><![CDATA[<p>siehe FAQ unter Komponenten &quot;Dynamische Arrays von Komponenten oder Objekten&quot; oder &quot;Zugriff, aber nicht durch Namen&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402476</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Tue, 13 Nov 2007 13:16:23 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Tue, 13 Nov 2007 13:59:53 GMT]]></title><description><![CDATA[<p>Vielen Dank,</p>
<p>ich habe jetzt schon selbst sehr viel dazu gefunden, zB. auch im Thread &quot;Mehrere CheckBoxen und ListBox Problem?&quot;. Ich werde mich bemühen intensiver zu suchen, ich wusste nur in diesem Fall nicht so richtig wonach ich suchen soll... Sorry.</p>
<p>Also Danke nochmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402506</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Tue, 13 Nov 2007 13:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Tue, 13 Nov 2007 14:25:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>eine Suche nach ComponentCount (auch in der BCB-Hilfe) müßte hilfreiche Hinweise liefern.</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402528</guid><dc:creator><![CDATA[Udo_11]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Tue, 13 Nov 2007 15:22:32 GMT]]></title><description><![CDATA[<p>Also irgendwie bin ich zu blöd... ich habe jetzt einigen Komponenten (die ich in einer Schleife manipulieren will) mit zB.</p>
<pre><code class="language-cpp">Edit2-&gt;ComponentIndex= 1;
</code></pre>
<p>einen definierten Index innerhalb des Formulars gegeben und kann nun in einer Schleife zB. mit</p>
<pre><code class="language-cpp">dynamic_cast&lt;TCheckBox*&gt;(this-&gt;Components[i+17])-&gt;Checked= true;
</code></pre>
<p>in Abhängigkeit vom Wert des Schleifenzählers zugehörige Komponenten manipulieren.<br />
(Kann man das so machen? )<br />
Jetzt wollte ich auf das Auswählen einer von 16 CheckBoxes in einer gemeinsamen Methode reagieren (CheckBoxClick). Wie bekomme ich denn jetzt heraus, welche CheckBox das Ereignis ausgelöst hat? Ich will dann mit dem Wert (zB. 2 für &quot;CheckBox2 hat das Ereignis ausgelöst&quot;) das zugehörige Edit2 verändern, bei CheckBox3 Edit3 verändern usw.<br />
Ich hab's probiert mit:</p>
<pre><code class="language-cpp">TCheckBox *CheckBoxNachbildung=dynamic_cast&lt;TCheckBox*&gt;(Sender);
unsigned short j= CheckBoxNachbildung-&gt;ComponentIndex;
</code></pre>
<p>aber beim Zugriff auf das zugehörige Edit mit:</p>
<pre><code class="language-cpp">dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[j+16])-&gt;Enabled= true, Text= &quot;&quot;;
</code></pre>
<p>entsteht eine exception... Bekommt die CheckBoxNachbildung einen eigenen ComponentIndex oder gar keinen oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402571</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Tue, 13 Nov 2007 15:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 08:36:28 GMT]]></title><description><![CDATA[<p>Der ComponentIndex wird automatisch festgelegt wenn die Komponente dem Formular zugefügt wird. Den solltest du nicht manipulieren. Wenn du dir Nummern merken willst kannst du dafür die Eigenschaft Tag der Komponente nehmen. Gib also dem Edit und der Checkbox, die zusammen gehören die gleiche Tag-Nummern und such die dann beim Aufruf heraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402579</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Nov 2007 08:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 08:13:12 GMT]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Der ComponentIndex wird automatisch festgelegt wenn die Komponente dem Formular zugefügt wird. Den solltest du nicht manipulieren.</p>
</blockquote>
<p>Solange es übersichtlich bleibt kann ich das doch theoretisch machen. Warum sollte ich nicht?</p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Wenn du dir Nummern merken willst kannst du dafür die Eigenschaft Tag der Komponente nehmen. Gib also dem Edit und der Checkbox, die zusammengehören die gleiche Tag-Nummern und such die dann beim Aufruf heraus.</p>
</blockquote>
<p>Das ist mir jetzt irgendwie zu einfach... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Ich bin dummerweise immer davon ausgegangen, dass Tag <strong>bool</strong> ist, nicht <strong>int</strong>... Keine Ahnung warum; vielleicht weil es so klingt wie &quot;Flag&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
Danke für den Denkanstoss. Ab und an braucht man echt so einen Schubser!</p>
<p>Eine Frage zu einem scheinbar üblichen Verfahren:<br />
Ist es nicht Verschwendung von Rechenzeit (und das spielt bei meinen Programmen auch eine kleine Rolle), wenn folgendes gemacht wird:<br />
Eine for-Schleife mit der Anzahl der Komponenten auf dem Formular als Anzahl der Durchläufe. In der Schleife testen, ob die jeweilige Komponente vom gesuchten Typ ist (per cast und Namensvergleich). Wenn sie es ist, Komponente dynamisch upcasten (richtig?) und Tag überprüfen. Wenn Tag stimmt, gecastete Komponente manipulieren. ???<br />
Ich finde das recht aufwendig, besonders wenn ich ein paar mehr Komponenten auf meinem Formular habe!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402885</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 08:13:12 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 08:23:23 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Solange es übersichtlich bleibt kann ich das doch theoretisch machen. Warum sollte ich nicht?</p>
</blockquote>
<p>Weil diese Eigenschaft nicht dazu gedacht ist. Es ist nicht klar was deine Zuweisungen für Auswirkungen hat</p>
<p>BCB-Hilfe schrieb:</p>
<blockquote>
<p>ComponentIndex wird intern für iterative Zuweisungsprozeduren verwendet.</p>
</blockquote>
<blockquote>
<p>Ist es nicht Verschwendung von Rechenzeit (und das spielt bei meinen Programmen auch eine kleine Rolle), wenn folgendes gemacht wird:<br />
Eine for-Schleife mit der Anzahl der Komponenten auf dem Formular als Anzahl der Durchläufe. In der Schleife testen, ob die jeweilige Komponente vom gesuchten Typ ist (per cast und Namensvergleich). Wenn sie es ist, Komponente dynamisch upcasten (richtig?) und Tag überprüfen. Wenn Tag stimmt, gecastete Komponente manipulieren. ???<br />
Ich finde das recht aufwendig, besonders wenn ich ein paar mehr Komponenten auf meinem Formular habe!?</p>
</blockquote>
<p>Richtiug, deshalb rate ich auch davon ab. Solche Sammlungen von Komponenten sollten gleich in einem eigenen, passenden, eventuell dynamischen Array verwaltet werden. Dann muß man weder unnütz iterieren, noch unnütz casten.<br />
Dieses Vorgehen wird in den genannten FAQ-Einträgen ja auch erklärt.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402893</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 14 Nov 2007 08:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 08:51:04 GMT]]></title><description><![CDATA[<blockquote>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Der ComponentIndex wird automatisch festgelegt wenn die Komponente dem Formular zugefügt wird. Den solltest du nicht manipulieren.</p>
</blockquote>
<p>ich schrieb:</p>
<blockquote>
<p>Solange es übersichtlich bleibt kann ich das doch theoretisch machen. Warum sollte ich nicht?</p>
</blockquote>
<p>akari schrieb:</p>
<blockquote>
<p>Weil diese Eigenschaft nicht dazu gedacht ist. Es ist nicht klar was deine Zuweisungen für Auswirkungen hat</p>
<p>BCB-Hilfe schrieb:</p>
<blockquote>
<p>ComponentIndex wird intern für iterative Zuweisungsprozeduren verwendet.</p>
</blockquote>
</blockquote>
</blockquote>
<p>Versteht mich bitte nicht falsch in meiner Unwissenheit - also: Wenn ComponentIndex nicht manipuliert werden darf, wäre er doch für uns Nutzer nicht manipulierbar (read only)!? Bei anderen Eigenschaften ist es doch auch so... Im Zitat aus der Hilfe steht nicht, dass ComponentIndex nicht manipuliert werden sollte.<br />
Wenn ich selbst Indizes zuweise, was soll passieren, außer dass ich sie kenne? Ich stelle mir das so vor: BCB schaut nach den Komponenten und bereits vergebenen Indizies (ich habe sie gleich im Aufruf der Main-Form manipuliert) und vergibt dann an die verbleibenden Komponenten ohne Index freie Indizes. Was soll da schief gehen?<br />
Tja, und was &quot;iterative Zuweisungsprozeduren&quot; sind, müsste ich mich erstmal schlau machen... <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="😞"
    /></p>
<p>akari schrieb:</p>
<blockquote>
<p>Solche Sammlungen von Komponenten sollten gleich in einem eigenen, passenden, eventuell dynamischen Array verwaltet werden. Dann muß man weder unnütz iterieren, noch unnütz casten.<br />
Dieses Vorgehen wird in den genannten FAQ-Einträgen ja auch erklärt.</p>
</blockquote>
<p>Okay, bin gewissermaßen schon wieder zu den FAQ unterwegs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402911</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 08:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 09:11:06 GMT]]></title><description><![CDATA[<p>Kolumbus schrieb:</p>
<blockquote>
<p>Wenn ich selbst Indizes zuweise, was soll passieren, außer dass ich sie kenne? Ich stelle mir das so vor: BCB schaut nach den Komponenten und bereits vergebenen Indizies (ich habe sie gleich im Aufruf der Main-Form manipuliert) und vergibt dann an die verbleibenden Komponenten ohne Index freie Indizes. Was soll da schief gehen?</p>
</blockquote>
<p>Die Inidizes müsse ja fortlaufend sein (sonst kann man ja nicht darüber iterieren). Wenn du also einen bereits vergebenen Index zuweisen willst, ändert sich die ganze Anordnung. Du weißt aber nicht wie. D.h. nach mehreren Zuweisungen kann der erste von dir vergebene Index intern schon wieder geändert sein. Das kann also schief gehen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402922</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Nov 2007 09:11:06 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 09:16:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Versteht mich bitte nicht falsch in meiner Unwissenheit - also: Wenn ComponentIndex nicht manipuliert werden darf, wäre er doch für uns Nutzer nicht manipulierbar (read only)!? Bei anderen Eigenschaften ist es doch auch so... Im Zitat aus der Hilfe steht nicht, dass ComponentIndex nicht manipuliert werden sollte.</p>
</blockquote>
<p>Das stimmt grundsätzlich.</p>
<blockquote>
<p>Wenn ich selbst Indizes zuweise, was soll passieren, außer dass ich sie kenne? Ich stelle mir das so vor: BCB schaut nach den Komponenten und bereits vergebenen Indizies (ich habe sie gleich im Aufruf der Main-Form manipuliert) und vergibt dann an die verbleibenden Komponenten ohne Index freie Indizes. Was soll da schief gehen?</p>
</blockquote>
<p>Leider ist nicht klar ob es wirklich so ist. Es könnte genauso gut sein das du durch das Setzen des ComponentIndex intern die Verwaltungsstruktur durcheinander bringst, mit Auswirkungen die vielleicht erst unter gewissen Umständen sich bemerkbar machen.<br />
/Edit : Und natürlich Braunsteins Einwand : Mit dem setzen von ComponentIndex kannst du maximal eine Reihe festmachen. Wenn du aber zwei oder mehr verschiedene Sammlungen von Arrays willst, wirst du dir dann selber die Indexe verschieben.</p>
<blockquote>
<p>Tja, und was &quot;iterative Zuweisungsprozeduren&quot; sind, müsste ich mich erstmal schlau machen...</p>
</blockquote>
<p>Ein Schleife die für alle Komponenten eine bestimmte Methode aufruft.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402923</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 14 Nov 2007 09:16:40 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 10:42:49 GMT]]></title><description><![CDATA[<p>So, das Zuweisen von Indizes habe ich jetzt rausgenommen - ihr habt mich überzeugt, dass die Folgen in ihrer Gesamtheit schlecht überschaubar sind (erst recht für mich als Anfänger).</p>
<blockquote>
<p>ich schrieb:</p>
<blockquote>
<p>Tja, und was &quot;iterative Zuweisungsprozeduren&quot; sind, müsste ich mich erstmal schlau machen...</p>
</blockquote>
<p>akari schrieb:</p>
<blockquote>
<p>Eine Schleife die für alle Komponenten eine bestimmte Methode aufruft.</p>
</blockquote>
</blockquote>
<p>Danke. Super, sowas mache ich ja schon... Ich habe mir somit die Hände gewaschen und hinterher gelernt, dass es &quot;Hygene&quot; heißt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Hier jetzt mal meine, inzwischen fertiggestellte, Ereignisbehandlungsmethode /~routine:</p>
<pre><code class="language-cpp">void __fastcall TForm4::CheckBoxClick(TObject *Sender)
{
	unsigned short j= dynamic_cast&lt;TCheckBox*&gt;(Sender)-&gt;Tag;
	unsigned short k;

	for(k=0; k &lt; (Form4-&gt;ComponentCount-1); )
	{
		if((this-&gt;Components[k]-&gt;ClassNameIs(&quot;TEdit&quot;)) &amp;&amp; (dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k])-&gt;Tag==j))
		{
			TEdit *VirtualEdit= dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k]);

			if(!VirtualEdit-&gt;Enabled)
				VirtualEdit-&gt;Enabled= true;
			else
			{
				VirtualEdit-&gt;Enabled= false;
				VirtualEdit-&gt;Text= &quot;0&quot;;
			}
			k= Form4-&gt;ComponentCount - 1;	// Schleifenabbruch herbeiführen
		}
        else	k++;
	}
}
</code></pre>
<p>Ist doch im Prinzip auch eine iterative Zuweisungsoperation?</p>
<p>Dazu noch eine Frage: Ist diese Version besser oder schlechter als die Obige?:</p>
<pre><code class="language-cpp">void __fastcall TForm4::CheckBoxClick(TObject *Sender)
{
	unsigned short j= dynamic_cast&lt;TCheckBox*&gt;(Sender)-&gt;Tag;
	unsigned short k;

	for(k=0; k &lt; (Form4-&gt;ComponentCount-1); )
	{
		if((this-&gt;Components[k]-&gt;ClassNameIs(&quot;TEdit&quot;)) &amp;&amp; (dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k])-&gt;Tag==j))
		{
			if(!dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k])-&gt;Enabled)
				dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k])-&gt;Enabled= true;
			else
			{
				dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k])-&gt;Enabled= false;
				dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k])-&gt;Text= &quot;0&quot;;
			}
			k= Form4-&gt;ComponentCount - 1;	// Schleifenabbruch herbeiführen
		}
        else	k++;
	}
}
</code></pre>
<p>Und wenn, warum ist die Eine besser als die Andere?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402965</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 10:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 11:06:50 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>dynamic_cast ist immer eine Laufzeit-Überprüfung. Damit sollte man es so wenig wie möglich aufrufen. Und wenn du dynamic_cast einsetzt, brauchst du auch kein ClassName mehr Also ungefähr so</p>
<pre><code class="language-cpp">void __fastcall TForm4::CheckBoxClick(TObject *Sender)
{
    unsigned short j= dynamic_cast&lt;TCheckBox*&gt;(Sender)-&gt;Tag;
    unsigned short k;

    for(k=0; k &lt; (Form4-&gt;ComponentCount-1); k++)
    {
        TEdit *VirtualEdit= dynamic_cast&lt;TEdit*&gt;(this-&gt;Components[k]);
        if (VirtualEdit)
        {

            if(!VirtualEdit-&gt;Enabled)
                VirtualEdit-&gt;Enabled= true;
            else
            {
                VirtualEdit-&gt;Enabled= false;
                VirtualEdit-&gt;Text= &quot;0&quot;;
            }
            break;    // Schleifenabbruch herbeiführen
        }
    }
}
</code></pre>
<p>Allerdings wäre es noch besser wenn du die Variante aus der FAQ nimmst die mit einem eigenen DynamicArray arbeitet.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402980</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 14 Nov 2007 11:06:50 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 11:57:47 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>...wenn du dynamic_cast einsetzt, brauchst du auch kein ClassName mehr...</p>
</blockquote>
<p>Ahh, verstehe... Und zwar wegen:</p>
<p>BCB-Hilfe schrieb:</p>
<blockquote>
<p>... Wenn die Umwandlung durchgeführt werden kann, so wandelt der Ausdruck dynamic_cast&lt; T &gt; (ptr) den Zeiger ptr in den gewünschten Typ um. Falls die Umwandlung eines Zeigertyps nicht möglich ist, hat der zurückgegebene Zeiger den Wert NULL. ...</p>
</blockquote>
<p>stimmts?</p>
<p>Und die Sache mit dem Schleifenabbruch ist mir ja peinlich... War schon wieder zu einfach für mich! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Zur FAQ-Variante: wenn sich herausstellt dass ich noch Zeit habe, werde ich das machen!</p>
<p>Wikipedia schrieb:</p>
<blockquote>
<p>... Ein wichtiger Faktor bei der Entwicklung eines Systems ist aus Wettbewerbsgründen die Zeit. So muss sich der Ingenieur in der Praxis häufig mit einer nichtidealen Lösung zufrieden geben, die aber dennoch als gut einstufbar ist. ...</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403007</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 11:57:47 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 12:15:49 GMT]]></title><description><![CDATA[<p>Mir ist da gerade noch etwas aufgefallen: Ist meine Lösung in diesem Fall nicht besser, weil dynamic_cast nur ausgeführt wird, wenn die Komponente ein TEdit ist? Mit der Lösung die akari angeboten hat, wird doch bei jeder Komponente ein dynamic_cast versucht... macht in meinem speziellen Fall einen maximalen Unterschied von 31 dynamic_casts (derzeit 48 Komponenten auf dem Formular, 17 davon TEdit). Hab ich was übersehen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403016</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 12:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 12:29:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Ahh, verstehe... Und zwar wegen:<br />
stimmts?</p>
</blockquote>
<p>Korrekt.</p>
<blockquote>
<p>Mir ist da gerade noch etwas aufgefallen: Ist meine Lösung in diesem Fall nicht besser, weil dynamic_cast nur ausgeführt wird, wenn die Komponente ein TEdit ist? Mit der Lösung die akari angeboten hat, wird doch bei jeder Komponente ein dynamic_cast versucht... macht in meinem speziellen Fall einen maximalen Unterschied von 31 dynamic_casts (derzeit 48 Komponenten auf dem Formular, 17 davon TEdit). Hab ich was übersehen?</p>
</blockquote>
<p>Du übersiehst zwei Sachen :<br />
- Auch die Ermittlung des ClassName sowie der AnsiString-Vergleich mit &quot;TEdit&quot; braucht seine Verarbeitung.<br />
- Wenn du schon auf ClassName vergleichst, brauchst du auch kein dynamic_cast sondern dann reicht ein static_cast ohne Überprüfung.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403026</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 14 Nov 2007 12:29:41 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 12:46:53 GMT]]></title><description><![CDATA[<p>Wenn mans genau nimmt sollte auch bei der CheckBox-Umwandlung ein Test rein.<br />
Also</p>
<pre><code class="language-cpp">TCheckBox* check(dynamic_cast&lt;TCheckBox*&gt;(Sender));
if( !check) return;
unsigned short j= check-&gt;Tag;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1403038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403038</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Nov 2007 12:46:53 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 13:29:51 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>Du übersiehst zwei Sachen :<br />
- Auch die Ermittlung des ClassName sowie der AnsiString-Vergleich mit &quot;TEdit&quot; braucht seine Verarbeitung.</p>
</blockquote>
<p>Ok, und was ist aufwendiger? Das oder dynamic_cast?</p>
<p>akari schrieb:</p>
<blockquote>
<p>- Wenn du schon auf ClassName vergleichst, brauchst du auch kein dynamic_cast sondern dann reicht ein static_cast ohne Überprüfung.</p>
</blockquote>
<p>Kannst du das bitte nochmal anders (und evtl ausführlicher) formulieren? Ich steh' schon wieder auf der Leitung! <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="😞"
    /></p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Wenn mans genau nimmt sollte auch bei der CheckBox-Umwandlung ein Test rein.</p>
</blockquote>
<p>Aber die Ereignisbehandlung ist doch für CheckBoxClick; Sender ist doch immer ein TCheckBox-Element <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Wozu der Test <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403066</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 13:57:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Ok, und was ist aufwendiger? Das oder dynamic_cast?</p>
</blockquote>
<p>Gute Frage. Schwer zu sagen. Ich vermute die ClassName-Variante.</p>
<blockquote>
<p>Kannst du das bitte nochmal anders (und evtl ausführlicher) formulieren? Ich steh' schon wieder auf der Leitung!</p>
</blockquote>
<p>Du machst momentan erst die ClassName-Überprüfung und dann die dynamic_cast-<em>Umwandlung mitsamt Überprüfung</em>. Damit ist eine Überprüfung doppelt. Und darum reicht eigentlich ein dynamic_cast aus.<br />
Du kannst natürlich auch die ClassName-Überprüfung machen und statt dem dynamic_cast einfach static_cast verwenden. Denn static_cast ist nur eine Umwandlung ohne Überprüfung, die man nehmen darf wenn man sich wirklich sicher ist. Dafür ist static_cast zur Laufzeit kostenlos.</p>
<blockquote>
<p>Aber die Ereignisbehandlung ist doch für CheckBoxClick; Sender ist doch immer ein TCheckBox-Element</p>
</blockquote>
<p>Braunstein meint genau das was ich oben gesagt habe : dynamic_cast brauchst du nur wenn du dir nicht sicher bist und ein Überprüfung braucht, ob die Umwandlung wirklich machbar ist. Das bedeutet aber auch das nach jedem sinnvollen dynamic_cast auch das Ergebnis von dynamic_cast überprüft werden sollte.</p>
<p>Wenn du dir zur Entwurfszeit sicher bist das es funktioniert dann reicht ein static_cast.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403088</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:57:52 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 14:08:10 GMT]]></title><description><![CDATA[<p>Kolumbus schrieb:</p>
<blockquote>
<p>[Aber die Ereignisbehandlung ist doch für CheckBoxClick;</p>
</blockquote>
<p>Die ist nur dafür gedacht. Ja. Wenn du sie aber mal versehentlich einem TEditClick zuweist knallt es. Dazu brauchst du nur mal im Objektinspektor falsch auswählen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403103</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Nov 2007 14:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 14:19:07 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Kolumbus schrieb:</p>
<blockquote>
<p>[Aber die Ereignisbehandlung ist doch für CheckBoxClick;</p>
</blockquote>
<p>Die ist nur dafür gedacht. Ja. Wenn du sie aber mal versehentlich einem TEditClick zuweist knallt es. Dazu brauchst du nur mal im Objektinspektor falsch auswählen.</p>
</blockquote>
<p>Also nur wegen dieser Befürchtung würde ich kein dynamic_cast verwenden. Soviel Kontrolle hab ich schon über mein Projekt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403110</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 14 Nov 2007 14:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 14:27:15 GMT]]></title><description><![CDATA[<p>Mag sein. Ich finde es nur eine nützliche Angewohnheit, bei dynamic_cast grundsätzlich zu prüfen. Kann sein das das manchmal unnötig ist, aber auf keinen Fall fehlerhaft. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Wie du ja schon gesagt hast kann man ja sonst gleich static_cast nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403118</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Nov 2007 14:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 14:29:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Mag sein. Ich finde es nur eine nützliche Angewohnheit, bei dynamic_cast grundsätzlich zu prüfen. Kann sein das das manchmal unnötig ist, aber auf keinen Fall fehlerhaft. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Genau <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<blockquote>
<p>Wie du ja schon gesagt hast kann man ja sonst gleich static_cast nehmen.</p>
</blockquote>
<p>Und genau das würde ich in diesem Fall auch machen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403119</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 14 Nov 2007 14:29:14 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 15:29:41 GMT]]></title><description><![CDATA[<p>So, jetzt würde ich gern einen ausgeben; Ihr seid spitze - ich glaub' ich hab's gerafft! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Nach Abwägung eurer Argumente sieht das (vorläufige) Ergebnis nun so aus:</p>
<pre><code class="language-cpp">void __fastcall TForm4::CheckBoxClick(TObject *Sender)
{
	unsigned short j= static_cast&lt;TCheckBox*&gt;(Sender)-&gt;Tag;

	for(unsigned short k= 0; k &lt; (this-&gt;ComponentCount-1); k++)
	{
		if((this-&gt;Components[k]-&gt;ClassNameIs(&quot;TEdit&quot;)) &amp;&amp; (static_cast&lt;TEdit*&gt;(this-&gt;Components[k])-&gt;Tag==j))
		{
			TEdit *VirtualEdit= static_cast&lt;TEdit*&gt;(this-&gt;Components[k]);

			if(!VirtualEdit-&gt;Enabled)
				VirtualEdit-&gt;Enabled= true;
			else
			{
				VirtualEdit-&gt;Enabled= false;
				VirtualEdit-&gt;Text= &quot;0&quot;;
			}
			break;
		}
	}
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1403172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403172</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 15:29:41 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 15:33:17 GMT]]></title><description><![CDATA[<p>Eine kleine Änderung</p>
<pre><code class="language-cpp">for(unsigned short k= 0; k &lt; (ComponentCount-1); k++)
    {
        TEdit* VirtualEdit = dynamic_cast&lt;TEdit*&gt;(Components[k]);
        if(VirtualEdit &amp;&amp; VirtualEdit-&gt;Tag==j)
        {

            if(!VirtualEdit-&gt;Enabled)
                VirtualEdit-&gt;Enabled= true;
            else
            {
                VirtualEdit-&gt;Enabled= false;
                VirtualEdit-&gt;Text= &quot;0&quot;;
            }
            break;
        }
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1403175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403175</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Nov 2007 15:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Komponentenmanipulation über Index on Wed, 14 Nov 2007 16:16:41 GMT]]></title><description><![CDATA[<p>Ok, das <strong>this</strong> spare ich mir gerne. Ich weiß ja zur Entwicklungszeit wo ich mich bewege. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Das deine Version übersichtlicher ist gebe ich zu und sie entspricht ja auch deinen dargelegten Prinzipien, aber ist sie zur Laufzeit ressourcensparender? Du castest jede Komponente, ich überprüfe bei jeder den Namen... wie bekommen wir raus, was günstiger ist? Gibts da eine Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403193</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 14 Nov 2007 16:16:41 GMT</pubDate></item></channel></rss>