<?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[Objekten auf form Caption zuweisen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich brauche für die übersetzung meines Programmes eine Funktion an die ich das Form übergebe und die dann in einer Datei nach der ggf. neuen Caption für die Objekte sucht. Also so:</p>
<pre><code class="language-cpp">__fastcall ChangeLanguage(TForm *AForm)
{
  TControl* CurrentControl;
  for (int i = 0; i &lt; AForm-&gt;ComponentCount; i++)
    {
      CurrentControl = dynamic_cast&lt;TControl*&gt;(AForm-&gt;Components[i]);
      if (CurrentControl)
        CurrentControl-&gt;Caption = FindCaption(CurrentControl-&gt;GetNamePath()/*oder CurrentControl-&gt;Name*/); 
  }
}
</code></pre>
<p>Aber das funktioniert nicht so wie ich mir das gedacht habe, da er &quot;TControl::Captions&quot; net kennt... obwohl er es laut hilfe kennen müßte??? <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>Wenn jemand ne idee hat was ich falsch mache oder wie man es sonst noch lösen könnte (ohne &quot;TControl::Tag&quot; zu benutzen) wäre ich für eure hilfe sehr dankbar!</p>
<p>thx</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190888/objekten-auf-form-caption-zuweisen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 14:47:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190888.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Aug 2007 07:39:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 07:39:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich brauche für die übersetzung meines Programmes eine Funktion an die ich das Form übergebe und die dann in einer Datei nach der ggf. neuen Caption für die Objekte sucht. Also so:</p>
<pre><code class="language-cpp">__fastcall ChangeLanguage(TForm *AForm)
{
  TControl* CurrentControl;
  for (int i = 0; i &lt; AForm-&gt;ComponentCount; i++)
    {
      CurrentControl = dynamic_cast&lt;TControl*&gt;(AForm-&gt;Components[i]);
      if (CurrentControl)
        CurrentControl-&gt;Caption = FindCaption(CurrentControl-&gt;GetNamePath()/*oder CurrentControl-&gt;Name*/); 
  }
}
</code></pre>
<p>Aber das funktioniert nicht so wie ich mir das gedacht habe, da er &quot;TControl::Captions&quot; net kennt... obwohl er es laut hilfe kennen müßte??? <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>Wenn jemand ne idee hat was ich falsch mache oder wie man es sonst noch lösen könnte (ohne &quot;TControl::Tag&quot; zu benutzen) wäre ich für eure hilfe sehr dankbar!</p>
<p>thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353517</guid><dc:creator><![CDATA[Karlos2323]]></dc:creator><pubDate>Tue, 28 Aug 2007 07:39:08 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 08:14:16 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Nein die Compilermeldung sagt nicht das TControl keine Caption-Eigenschaft hat sondern das der Zugriff darauf über einen TControl-Zeiger nicht möglich ist. Denn in TControl ist diese Eigenschaft noch private. Erst konkrete Klassen wie TLabel setzen die Eigenschaft auf public, wenn die Eigenschaft Sinn macht. Zum Beispiel bei TEdit ist Caption auch nicht zugreifbar.<br />
Dir bleibt nichts anderes übrig als alle Controls erstmal in ihren eigentlichen Typ zu casten (dynamic_cast macht das mit Überprüfung).</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353546</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Aug 2007 08:14:16 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 08:57:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>eine andere Möglichkeit gibt es noch, ist aber nicht ganz so sauber.<br />
Schreib Dir eine &quot;Cracker&quot;-Klasse, in der die Property public ist<br />
und caste jeweils auf diese Klasse. Dann hast Du den Zugriff auf<br />
die Caption Eigenschaft.</p>
<pre><code class="language-cpp">class TCaptionCracker: public TControl
{
   public:
      __property Caption;
}

__fastcall ChangeLanguage(TForm *AForm)
{
  TControl* CurrentControl;
  //...ein Haufen Code...
  ((TCaptionCracker*)CurrentControl)-&gt;Caption = &quot;Neue Caption&quot;;
}
</code></pre>
<p>Der Vorteil ist, dass Du die tatsächliche Unterklasse von TControl nicht kennen musst.<br />
Der Nachteil ist, dass diese Methode irgendwie &quot;dreckig&quot; wirkt.</p>
<p>Gruß</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353571</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 28 Aug 2007 08:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 09:40:14 GMT]]></title><description><![CDATA[<p>n1,</p>
<p>wieder was dazu gelernt... <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="😃"
    /></p>
<p>Das ist genau das wonach ich gesucht habe... is zwar nen bissel dirty code aber naja spart mir auf jedenfall nen haufen schreibarbeit gegenüber den ganzen dynamic_cast gefummle und ich ich mauß mir keinen kopf machen das ich was vergesse!</p>
<p>YMMD <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/1353610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353610</guid><dc:creator><![CDATA[Karlos2323]]></dc:creator><pubDate>Tue, 28 Aug 2007 09:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 09:44:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Hoffentlich machst du dir aber einen Kopf das du undefiniertes Verhalten erzeugst, und das unter Umständen dein Programm abstürzen könnte.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353617</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Aug 2007 09:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 10:04:40 GMT]]></title><description><![CDATA[<p>Hm,</p>
<p>das wäre natürlich imho schlecht wenn das Programm aufgrund dieses Codes irgendwo / irgendwann klatscht! Das lässt sich bestimmt net mit nen try &amp; catch block abfangen oder?</p>
<p>tia</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353641</guid><dc:creator><![CDATA[Karlos2323]]></dc:creator><pubDate>Tue, 28 Aug 2007 10:04:40 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 11:20:19 GMT]]></title><description><![CDATA[<p>Nochmal hallo,</p>
<p>ein anderer saubererer Weg wäre über die Windows-API zu gehen.<br />
Dazu müsstest Du aber wenigstens auf TWinControl casten.<br />
Dann hast die Eigenschaft Handle, die Du verwenden kannst,<br />
um damit die Text-Eigenschaft zu setzen:</p>
<pre><code class="language-cpp">TControl* someControl;  // irgendwoher beziehen...
TWinControl* ctrl = dynamic_cast&lt;TWinControl*&gt; someControl;
if (ctrl != 0)
   SetWindowText(ctrl-&gt;Handle, &quot;Neuer Text&quot;);
</code></pre>
<p>Sollte so oder so ähnlich funktionieren.</p>
<p>Gruß</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353707</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 28 Aug 2007 11:20:19 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 11:25:48 GMT]]></title><description><![CDATA[<blockquote>
<p>Hallo</p>
<p>Hoffentlich machst du dir aber einen Kopf das du undefiniertes Verhalten erzeugst, und das unter Umständen dein Programm abstürzen könnte.</p>
<p>bis bald<br />
akari</p>
</blockquote>
<p>Frage:</p>
<p>Erzeuge ich mit:</p>
<pre><code class="language-cpp">dynamic_cast&lt;TCaptionCracker*&gt;(CurrentControl)-&gt;Caption;
</code></pre>
<p>auch noch ein undefiniertes Verhalten oder fliegt eine Exception vom Typ bad_cast???</p>
<p>tia</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353718</guid><dc:creator><![CDATA[Karlos2323]]></dc:creator><pubDate>Tue, 28 Aug 2007 11:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 11:37:43 GMT]]></title><description><![CDATA[<p>@ Alexander Kempf:</p>
<p>Danke für deine bemühungen! Das funktioniert schon ganz gut, jedoch nicht bei TLabel, da das beim cast zu TWinControl NULL is! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353728</guid><dc:creator><![CDATA[Karlos2323]]></dc:creator><pubDate>Tue, 28 Aug 2007 11:37:43 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 11:40:42 GMT]]></title><description><![CDATA[<p>bad_cast kann hier nicht fliegen. Die kommt eh nur bei fehlerhaften casten von Referenzen. Das hier kann zu undefinierten Verhalten bzw. einer AccessViolation führen.<br />
Ein dynamic_cast ist hier sinnlos. Du weißt ja, dass TCaptionCracker von TControl abgeleitet ist. Du weißt nur nicht, ob der Zugriff auf Caption zulässig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353732</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 28 Aug 2007 11:40:42 GMT</pubDate></item><item><title><![CDATA[Reply to Objekten auf form Caption zuweisen on Tue, 28 Aug 2007 11:59:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Um es nochmal genauer zu sagen : dynamic_cast wird wegen seiner eigenbauten Laufzeitprüfung dann immer 0 zurückgeben, da ja keine Instanz in Wirklichkeit vom Typ TCaptionCracker ist. Deshalb wird auch der folgende Zugriff die erwähnte Zugriffsverletzung auslösen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353755</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Aug 2007 11:59:26 GMT</pubDate></item></channel></rss>