<?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[Problem - Namenloser Komponentenzugriff]]></title><description><![CDATA[<p>hallo<br />
Ich möchte die Namen von Bilder dynamisch während der LaufZeit verändern.<br />
die vereinfachte Variante sieht etwa so aus</p>
<pre><code class="language-cpp">void __fastcall TfrmSpielbrett::Button1Click(TObject *Sender)
{
   for(int i=0; i &lt; frmSpielbrett-&gt;ComponentCount; i++)
   {
      if (frmSpielbrett-&gt;Components[i]-&gt;ClassNameIs(&quot;TImage&quot;))
      {
         if(frmSpielbrett-&gt;Components[i]-&gt;Name == &quot;Img01&quot;)
         {
            dynamic_cast&lt;TImage*&gt;(frmSpielbrett-&gt;Components[i])-&gt;Name = &quot;Img02&quot;;
         }
      }
   }
}

//---------------------------------------------------------------------------

void __fastcall TfrmSpielbrett::Img01Click(TObject *Sender)
{
   if (tmSchieben-&gt;Enabled != true)
   {
      frmMenue-&gt;Feldname = &quot;Img01&quot;;
      Ziehen();
   }
}
//---------------------------------------------------------------------------

void __fastcall TfrmSpielbrett::Img02Click(TObject *Sender)
{
   if (tmSchieben-&gt;Enabled != true)
   {
      frmMenue-&gt;Feldname = &quot;Img02&quot;;
      Ziehen();
   }
}
</code></pre>
<p>Zuerst will ich durch den Klick auf Button1 das TImage &quot;Img01&quot; in &quot;Img02&quot; unbennen.<br />
Danach sollte mit einem Klick auf das unbenannte Image der Wert &quot;Img02&quot; zurück kommen(da es ja jetzt so heisst). Aber es kommt der Wert &quot;Img01&quot; zurück.</p>
<p>habe ich etwas vergessen oder mache ich etwas grundlegendes falsch? <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="😕"
    /> <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>
<p>BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/88763/problem-namenloser-komponentenzugriff</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Jul 2026 11:00:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/88763.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Oct 2004 08:41:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 08:41:47 GMT]]></title><description><![CDATA[<p>hallo<br />
Ich möchte die Namen von Bilder dynamisch während der LaufZeit verändern.<br />
die vereinfachte Variante sieht etwa so aus</p>
<pre><code class="language-cpp">void __fastcall TfrmSpielbrett::Button1Click(TObject *Sender)
{
   for(int i=0; i &lt; frmSpielbrett-&gt;ComponentCount; i++)
   {
      if (frmSpielbrett-&gt;Components[i]-&gt;ClassNameIs(&quot;TImage&quot;))
      {
         if(frmSpielbrett-&gt;Components[i]-&gt;Name == &quot;Img01&quot;)
         {
            dynamic_cast&lt;TImage*&gt;(frmSpielbrett-&gt;Components[i])-&gt;Name = &quot;Img02&quot;;
         }
      }
   }
}

//---------------------------------------------------------------------------

void __fastcall TfrmSpielbrett::Img01Click(TObject *Sender)
{
   if (tmSchieben-&gt;Enabled != true)
   {
      frmMenue-&gt;Feldname = &quot;Img01&quot;;
      Ziehen();
   }
}
//---------------------------------------------------------------------------

void __fastcall TfrmSpielbrett::Img02Click(TObject *Sender)
{
   if (tmSchieben-&gt;Enabled != true)
   {
      frmMenue-&gt;Feldname = &quot;Img02&quot;;
      Ziehen();
   }
}
</code></pre>
<p>Zuerst will ich durch den Klick auf Button1 das TImage &quot;Img01&quot; in &quot;Img02&quot; unbennen.<br />
Danach sollte mit einem Klick auf das unbenannte Image der Wert &quot;Img02&quot; zurück kommen(da es ja jetzt so heisst). Aber es kommt der Wert &quot;Img01&quot; zurück.</p>
<p>habe ich etwas vergessen oder mache ich etwas grundlegendes falsch? <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="😕"
    /> <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>
<p>BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/627420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627420</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Wed, 13 Oct 2004 08:41:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 09:29:08 GMT]]></title><description><![CDATA[<p>Verstehe ich das jetzt richtig:</p>
<p>Du hast Zwei OnClick Methoden. Normalerweise wird bei Img01-&gt;OnClick Methode Img01Click ausgeführt. Wenn jetzt aber der Button gedrückt wurde soll Methode Img02Click ausgeführt werden.<br />
Hab ich das so richtig verstanden?</p>
<p>Wenn ja: Der Name des Images spiel dabei überhaubtkeine Rolle! Du musst einfach in deinem ButtonClick ereigniss folgendes machen:</p>
<pre><code class="language-cpp">Img01-&gt;OnClick=Img02Click;
</code></pre>
<p>Damit gibt sagst du dem Image was es machen soll, wenn geklickt wird. Der Name der Komponente und der Name der OnClick-Methode ist nämlich frei wählbar und hat nix mit einer späteren Verknüpfung dieser zu tun.</p>
<p>Sollte ich dich falsch verstanden haben, ignorier mich 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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/627476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627476</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Wed, 13 Oct 2004 09:29:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 09:35:10 GMT]]></title><description><![CDATA[<p>Du kannst zur Laufzeit zwar die <em>Name</em>-Property des Images ändern, das ist aber nur kosmetisch. Der Name der Variablen selbst kann zur Laufzeit logischerweise nicht geändert werden.</p>
<p>Falls die Antwort von -=]xXx[=- dein eigentliches Problem noch nicht beantwortet hat dann musst du uns ein paar mehr Informationen zum Sinn und Zweck des Ganzen geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/627482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627482</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 13 Oct 2004 09:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 09:48:09 GMT]]></title><description><![CDATA[<p>Im Prinzip habe ich mehrere Reihen an Bildern die ich verschieben möchte<br />
ich versuche es mal in eimem Beispiel darzustellen:</p>
<pre><code class="language-cpp">Bilder 1-7

     [1][2][3][4][5][6][7]

jetzt setze ich ein weiteres Bild davor Bild 9

  [9][1][2][3][4][5][6][7]

das ganze schiebe ich um 1 Feld nach rechts

     [9][1][2][3][4][5][6][7]

benne die Bilder um (von rechts nach links)

     [1][2][3][4][5][6][7][9]
</code></pre>
<p>So habe ich wieder die gleiche ausgangslage wie am anfang und doch sind die Bilder verschoben.<br />
da ich aber die &quot;koordinaten&quot; der Bilder mit einem Click auslese möchte ich dass immer der Click auf das Bild in der erstenspallte eine 1 zurück gibt in der zweiten spalte eine 2, etc.. (Bild 9 gibt nichts zurück -&gt; stelle ich mit enabled ab)</p>
<p>wenn ich jetzt die &quot;Click-Funktion&quot; so verschiebe:</p>
<pre><code class="language-cpp">Img9-&gt;OnClick=Img1Click;
Img1-&gt;OnClick=Img2Click;
Img02-&gt;OnClick=Img3Click;
etc..
</code></pre>
<p>passiert dan nicht, dass wenn ich Auf Img1 klicke ich auf Img2Click und da weiter auf Img3Click etc weiter geleitet werde? <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>
<p>ich hoffe ich habe mich einigermassen klar ausgedrück <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
aber schonmal thx für die aufmerksamkeit</p>
<p>BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/627491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627491</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Wed, 13 Oct 2004 09:48:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 10:33:47 GMT]]></title><description><![CDATA[<p>Ich würde das anders lösen!</p>
<p>Nenn die Bilder einfach wie es dir passt. Nutze dann die &quot;Tag&quot;-Eigenschaft der Bilder (z.B. Img01-&gt;Tag) um ihnen ihre position zuzuweisen. Tag ist einfach nur nen int-Wert ohne spezielle Funktion, wie dir die Hilfe sicherlich auch schnell bestätigt <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>Und dann hast du einfach nur ein einziges OnClick-Ereignis</p>
<pre><code class="language-cpp">void __fastcall TfrmSpielbrett::BildchenClick(TObject *Sender)
{
   if (tmSchieben-&gt;Enabled != true)
   {
      if(Sender-&gt;ClassNameIs(&quot;TImage&quot;))
      {
           frmMenue-&gt;Feldname = &quot;Img&quot;+IntToStr((dynamic_cast&lt;TImage*&gt;(Sender))-&gt;Tag);
           Ziehen();
      }
   }
}
</code></pre>
<p>Und nun gibst du allen Images die due erstellst das gleiche OnClick-Ereignis.</p>
<p>Deiner Aussage nach zu schließen, hast du das Modell, das hinter den Komponenten und den Ereignissen steckt noch nicht ganz verstanden. Du kannst deinem OnClick irgend eine Methode zuordnen, die als Parameter ein TObject* erwartet. Wie die heißt und was die macht, das ist dem Ereigniss und der Komponente (eigendlich dem Objekt) schnurzpiepe....<br />
Und desshalb kannst du auch hunderten von Objekten die gleiche Methode für das OnClick zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/627520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627520</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Wed, 13 Oct 2004 10:33:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 11:36:16 GMT]]></title><description><![CDATA[<p>danke, genau das hat mich jetzt weiter gebracht.. jetzt läuft es</p>
<p>das Click verhalten aller Images</p>
<pre><code class="language-cpp">void __fastcall TfrmSpielbrett::Img00Click(TObject *Sender)
{
   if (tmSchieben-&gt;Enabled != true)
   {
      if(Sender-&gt;ClassNameIs(&quot;TImage&quot;))
      {
         if((dynamic_cast&lt;TImage*&gt;(Sender))-&gt;Tag&lt;10)
            frmMenue-&gt;Feldname = &quot;Img0&quot;+IntToStr((dynamic_cast&lt;TImage*&gt;(Sender))-&gt;Tag);
         else
           frmMenue-&gt;Feldname = &quot;Img&quot;+IntToStr((dynamic_cast&lt;TImage*&gt;(Sender))-&gt;Tag);

         Ziehen();
      }
   }
}
</code></pre>
<p>und beim Schieben der Images verschiebe ich einfach die namen und die weise die tags zu<br />
im stil von</p>
<pre><code class="language-cpp">Img15-&gt;Name = &quot;Img16&quot;;
Img16-&gt;Tag = 16;

Img14-&gt;Name = &quot;Img15&quot;;
Img15-&gt;Tag = 15;

Img13-&gt;Name = &quot;Img14&quot;;
Img14-&gt;Tag = 14;

Img12-&gt;Name = &quot;Img13&quot;;
Img13-&gt;Tag = 13;

Img11-&gt;Name = &quot;Img12&quot;;
Img12-&gt;Tag = 12;

Img10-&gt;Name = &quot;Img11&quot;;
Img11-&gt;Tag = 11;

ImgSchieb-&gt;Name = &quot;Img10&quot;;
Img10-&gt;Tag = 10;
</code></pre>
<p>Die Namen muss ich auch verschieben da ich eigentlich ein 7x7 Bilderarray habe+ 1 Bild zum schieben. ich kann so in alle richtungen schieben, und trotzdem kriege ich noch die richtigen koordinaten mit dem Click</p>
<p>thx für die Info</p>
<p>BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/627576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627576</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Wed, 13 Oct 2004 11:36:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 11:46:50 GMT]]></title><description><![CDATA[<p>So ganz spontan ist mir noch eine Sache aufgefallen. Du solltest das dynamic_cast nur einmal durchführen. Das macht die ganze sache auch etwas übesichtlicher:</p>
<pre><code class="language-cpp">void __fastcall TfrmSpielbrett::Img00Click(TObject *Sender)
{
   if (tmSchieben-&gt;Enabled != true)
   {
      if(Sender-&gt;ClassNameIs(&quot;TImage&quot;))
      {
         TImage* img=dynamic_cast&lt;TImage*&gt;(Sender);
         if(img-&gt;Tag&lt;10)
            frmMenue-&gt;Feldname = &quot;Img0&quot;+IntToStr(img-&gt;Tag);
         else
           frmMenue-&gt;Feldname = &quot;Img&quot;+IntToStr(img-&gt;Tag);

         Ziehen();
      }
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/627589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627589</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Wed, 13 Oct 2004 11:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 11:50:01 GMT]]></title><description><![CDATA[<p>ob es sich wirklich lohnt wegen diesen 3 zeilen eine variable anzulegen, darüber kann man sich streiten ob es übersichtlicher wird.. aber ich habe es mir auch schon überlegt gehabt..</p>
<p>BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/627594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627594</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Wed, 13 Oct 2004 11:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem - Namenloser Komponentenzugriff on Wed, 13 Oct 2004 11:53:36 GMT]]></title><description><![CDATA[<p>xXx Vorschlag hat was für sich, insbesondere wenn man nach dem dynamic_cast noch prüft, ob man einen gültigen Zeiger erhalten hat. Dann kann die Prüfung mit ClassNameIs auch komplett entfallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/627600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/627600</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 13 Oct 2004 11:53:36 GMT</pubDate></item></channel></rss>