<?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[VCL Form zur Laufzeit austauschen]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine VCL Form (Form2) die ich von Form2 mit -&gt;Show() öffne. Meine Anwendung läuft schon einige Zeit produktiv.<br />
ich habe eine neue Form erstellt und will zur Laufzeit entscheiden welche Form gestartet wird um ausgewählten Anwendern ein alternatives Design zu zeigen und<br />
andere nicht zu erschrecken.<br />
Zu einer Lösung wollte ich ChatGPT überreden. Der liefert:</p>
<p>TForm* targetForm = nullptr;<br />
bool useForm2 = true; /* Ihre Entscheidungslogik hier */;<br />
if (useForm2)<br />
{<br />
targetForm = Form2;<br />
}<br />
else<br />
{<br />
targetForm = Form3;<br />
}<br />
targetForm-&gt;Edit1 = &quot;blabla&quot;;</p>
<p>Alle Controls müssen natürlich in beiden Forms mit gleichen Namen existieren.</p>
<p>Ich bekomme jedoch den Fehler:<br />
no member named Edit1 in Vcl::Forms:TForms</p>
<p>hat jemand eine Idee, wie man sowas hintricksen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/354583/vcl-form-zur-laufzeit-austauschen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 04:55:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/354583.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Mar 2024 15:09:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to VCL Form zur Laufzeit austauschen on Thu, 07 Mar 2024 15:09:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine VCL Form (Form2) die ich von Form2 mit -&gt;Show() öffne. Meine Anwendung läuft schon einige Zeit produktiv.<br />
ich habe eine neue Form erstellt und will zur Laufzeit entscheiden welche Form gestartet wird um ausgewählten Anwendern ein alternatives Design zu zeigen und<br />
andere nicht zu erschrecken.<br />
Zu einer Lösung wollte ich ChatGPT überreden. Der liefert:</p>
<p>TForm* targetForm = nullptr;<br />
bool useForm2 = true; /* Ihre Entscheidungslogik hier */;<br />
if (useForm2)<br />
{<br />
targetForm = Form2;<br />
}<br />
else<br />
{<br />
targetForm = Form3;<br />
}<br />
targetForm-&gt;Edit1 = &quot;blabla&quot;;</p>
<p>Alle Controls müssen natürlich in beiden Forms mit gleichen Namen existieren.</p>
<p>Ich bekomme jedoch den Fehler:<br />
no member named Edit1 in Vcl::Forms:TForms</p>
<p>hat jemand eine Idee, wie man sowas hintricksen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2620799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2620799</guid><dc:creator><![CDATA[hawiwo67]]></dc:creator><pubDate>Thu, 07 Mar 2024 15:09:13 GMT</pubDate></item><item><title><![CDATA[Reply to VCL Form zur Laufzeit austauschen on Thu, 07 Mar 2024 15:36:27 GMT]]></title><description><![CDATA[<p>Da du <code>targetForm</code> (nur) als <code>TForm</code> deklariert hast, ist dort kein Member <code>Edit1</code> bekannt.<br />
Du müßtest eine gemeinsame Basisklasse (Basisform) für beide Forms erstellen, welche dann die Member besitzt, die du von außen ansprechen möchtest.</p>
<p>Unterscheiden sich denn beide Forms so sehr, daß du 2 benötigst, anstelle in der vorhandenen das Design programmiertechnisch zu wechseln?</p>
<p>Edit:<br />
Es ginge auch noch per Codewiederholung:</p>
<pre><code class="language-cpp">if (useForm2)
{
  Form2-&gt;Edit1 = &quot;blabla&quot;;
  targetForm = Form2;
}
else
{
  Form3-&gt;Edit1 = &quot;blabla&quot;;
  targetForm = Form3;
}

targetForm-&gt;Show();
</code></pre>
<p>Dies ist aber eher ein schlechter Workaround.</p>
<p>PS: Verwende bitte Code-Tags bei deinen Beiträgen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2620800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2620800</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 07 Mar 2024 15:36:27 GMT</pubDate></item></channel></rss>