<?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[Einem Objekt einen Wert für die Caption übergeben]]></title><description><![CDATA[<p>Halo liebe C++ Gemeinde,</p>
<p>habe eine Problem bei der Änderung der Captions. Die Captions der einzelnen Objekte von Form2 sollen geändert werden, nachdem sie geucht und gefunden wurden. Sobald die Objekte also gefunden wurden, würde der NAme des Objekts übergeben und mittels diesem Namen wird in der XML-Datei nach den Captions gesucht. Das hat den Vorteil, dass ich nur noch Elemente in das Form einfügen muss ohne mir gedanken über Mahrsprachigkeit zu machen (Englisch, Deutsch usw.). Die Captions werden also automatisch aus der XML-Datei gefischt. Problem ist, das sich die Captions nicht übergeben lassen. Ich bekomme den Fehlet, dass Captions keine Componente von TComponent ist. Stimmt ja auch. Doch TControl erbt doch von TComponent. Wie kann ich das Problem lösen das ich die Captions umbenant bekomme. Hier mein Quleltext.</p>
<p>//---------------------------------------------------------------------------</p>
<p>#include &lt;vcl.h&gt;<br />
#pragma hdrstop</p>
<p>#include &quot;Objektsuche.h&quot;<br />
#include &lt;XMLDoc.hpp&gt;<br />
//---------------------------------------------------------------------------<br />
#pragma package(smart_init)<br />
#pragma resource &quot;*.dfm&quot;<br />
TForm2 *Form2;</p>
<p>//---------------------------------------------------------------------------<br />
AnsiString getName(AnsiString ObjName,AnsiString Sprache)<br />
{<br />
try<br />
{<br />
AnsiString BuCaption;<br />
_di_IXMLDocument LangXML = LoadXMLDocument(&quot;lang.xml&quot;);<br />
_di_IXMLNodeList NodeList = LangXML-&gt;DocumentElement-&gt;ChildNodes;<br />
_di_IXMLNode ObjNameNode = NodeList-&gt;FindNode(ObjName);<br />
BuCaption = ObjNameNode-&gt;ChildNodes-&gt;FindNode(Sprache)-&gt;NodeValue;</p>
<p>return BuCaption;<br />
}<br />
catch (...)<br />
{<br />
try<br />
{<br />
throw Exception(&quot;&quot;);<br />
}<br />
catch (Exception &amp;exception)<br />
{<br />
Application-&gt;ShowException(&amp;exception);<br />
}<br />
}<br />
}</p>
<p>//---------------------------------------------------------------------------<br />
__fastcall TForm2::TForm2(TComponent* Owner)<br />
: TForm(Owner)<br />
{<br />
// Ausgabe der Anzahl der Objekte<br />
int i = 0;<br />
i= Form2-&gt;ComponentCount;<br />
Button_Para-&gt;Caption = i;<br />
}<br />
//---------------------------------------------------------------------------<br />
void __fastcall TForm2::Button_BerPrClick(TObject *Sender)<br />
{<br />
// Suchen nach dem Namen der Objekte und Ausgabe der Namen</p>
<p>AnsiString ObjName[5];<br />
AnsiString CaptionName[5];<br />
AnsiString Sprache = &quot;eng&quot;;</p>
<p>for (int i=0; i&lt; Form2-&gt;ComponentCount;i++)</p>
<p>{<br />
ObjName[i] = Form2-&gt;Components[i]-&gt;GetNamePath();<br />
CaptionName[i] = getName(ObjName[i], Sprache);</p>
<p>// Form2-&gt;Components[i]-&gt;Caption = CaptionName[i];<br />
}<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161675/einem-objekt-einen-wert-für-die-caption-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 14:06:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161675.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Oct 2006 06:30:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einem Objekt einen Wert für die Caption übergeben on Tue, 10 Oct 2006 06:30:46 GMT]]></title><description><![CDATA[<p>Halo liebe C++ Gemeinde,</p>
<p>habe eine Problem bei der Änderung der Captions. Die Captions der einzelnen Objekte von Form2 sollen geändert werden, nachdem sie geucht und gefunden wurden. Sobald die Objekte also gefunden wurden, würde der NAme des Objekts übergeben und mittels diesem Namen wird in der XML-Datei nach den Captions gesucht. Das hat den Vorteil, dass ich nur noch Elemente in das Form einfügen muss ohne mir gedanken über Mahrsprachigkeit zu machen (Englisch, Deutsch usw.). Die Captions werden also automatisch aus der XML-Datei gefischt. Problem ist, das sich die Captions nicht übergeben lassen. Ich bekomme den Fehlet, dass Captions keine Componente von TComponent ist. Stimmt ja auch. Doch TControl erbt doch von TComponent. Wie kann ich das Problem lösen das ich die Captions umbenant bekomme. Hier mein Quleltext.</p>
<p>//---------------------------------------------------------------------------</p>
<p>#include &lt;vcl.h&gt;<br />
#pragma hdrstop</p>
<p>#include &quot;Objektsuche.h&quot;<br />
#include &lt;XMLDoc.hpp&gt;<br />
//---------------------------------------------------------------------------<br />
#pragma package(smart_init)<br />
#pragma resource &quot;*.dfm&quot;<br />
TForm2 *Form2;</p>
<p>//---------------------------------------------------------------------------<br />
AnsiString getName(AnsiString ObjName,AnsiString Sprache)<br />
{<br />
try<br />
{<br />
AnsiString BuCaption;<br />
_di_IXMLDocument LangXML = LoadXMLDocument(&quot;lang.xml&quot;);<br />
_di_IXMLNodeList NodeList = LangXML-&gt;DocumentElement-&gt;ChildNodes;<br />
_di_IXMLNode ObjNameNode = NodeList-&gt;FindNode(ObjName);<br />
BuCaption = ObjNameNode-&gt;ChildNodes-&gt;FindNode(Sprache)-&gt;NodeValue;</p>
<p>return BuCaption;<br />
}<br />
catch (...)<br />
{<br />
try<br />
{<br />
throw Exception(&quot;&quot;);<br />
}<br />
catch (Exception &amp;exception)<br />
{<br />
Application-&gt;ShowException(&amp;exception);<br />
}<br />
}<br />
}</p>
<p>//---------------------------------------------------------------------------<br />
__fastcall TForm2::TForm2(TComponent* Owner)<br />
: TForm(Owner)<br />
{<br />
// Ausgabe der Anzahl der Objekte<br />
int i = 0;<br />
i= Form2-&gt;ComponentCount;<br />
Button_Para-&gt;Caption = i;<br />
}<br />
//---------------------------------------------------------------------------<br />
void __fastcall TForm2::Button_BerPrClick(TObject *Sender)<br />
{<br />
// Suchen nach dem Namen der Objekte und Ausgabe der Namen</p>
<p>AnsiString ObjName[5];<br />
AnsiString CaptionName[5];<br />
AnsiString Sprache = &quot;eng&quot;;</p>
<p>for (int i=0; i&lt; Form2-&gt;ComponentCount;i++)</p>
<p>{<br />
ObjName[i] = Form2-&gt;Components[i]-&gt;GetNamePath();<br />
CaptionName[i] = getName(ObjName[i], Sprache);</p>
<p>// Form2-&gt;Components[i]-&gt;Caption = CaptionName[i];<br />
}<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151924</guid><dc:creator><![CDATA[radian]]></dc:creator><pubDate>Tue, 10 Oct 2006 06:30:46 GMT</pubDate></item><item><title><![CDATA[Reply to Einem Objekt einen Wert für die Caption übergeben on Tue, 10 Oct 2006 07:21:42 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>entweder benutzt du die Eigenschaft <em>TForm::Controls</em> (müßtest dann aber rekursiv arbeiten), oder du castest überprüfend auf TControl.</p>
<pre><code class="language-cpp">TControl* curcontrol;
for (int i=0; i&lt; Form2-&gt;ComponentCount;i++)

{
  curcontrol = dynamic_cast&lt;TControl*&gt;(Components[i]); 
  if (curcontrol)
  {
    ObjName[i] = curcontrol-&gt;GetNamePath();
    CaptionName[i] = getName(ObjName[i], Sprache);
    curcontrol-&gt;Caption = CaptionName[i];
  }
}
</code></pre>
<p>und las das Form2-&gt; in Methoden weg, die schon zu Form2 gehören.</p>
<p>/Edit : Rück deinen Code ordentlich ein und benutzt beim Posten von Code hier im Forum den C++ Tag (direkt unter den Smilies)</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151951</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 10 Oct 2006 07:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to Einem Objekt einen Wert für die Caption übergeben on Tue, 10 Oct 2006 07:58:37 GMT]]></title><description><![CDATA[<p>Danke dir. Habe es auch schon alleine hinbekommen. deine Lösung ist aber noch etwas kürzer und besser.<br />
Werde deine Tips befolgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151978</guid><dc:creator><![CDATA[radian]]></dc:creator><pubDate>Tue, 10 Oct 2006 07:58:37 GMT</pubDate></item></channel></rss>