<?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[Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich erzeuge zur Laufzeit Form2 und übergebe einen Zeiger auf Form3</p>
<pre><code class="language-cpp">Form2 = new TForm2(Form3);
</code></pre>
<p>Nun möchte ich anhand des übergebenen Zeigers Form3 erstellen.</p>
<pre><code class="language-cpp">TForm* window;
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TForm* form)
	: TForm(Owner)
{
	window = form;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
	window = new TForm(NULL);
}
</code></pre>
<p>Es kommt nun die Fehlermeldung &quot;Mehrdeutigkeit zwischen Forms::TForm::TForm::(Classes::TComponent*) und Forms::TForm::TForm(void*)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/107356/zeiger-einer-form-mit-dem-konstruktor-übergenen-und-dann-zur-laufzeit-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 13:54:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/107356.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Apr 2005 20:26:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Mon, 18 Apr 2005 20:26:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich erzeuge zur Laufzeit Form2 und übergebe einen Zeiger auf Form3</p>
<pre><code class="language-cpp">Form2 = new TForm2(Form3);
</code></pre>
<p>Nun möchte ich anhand des übergebenen Zeigers Form3 erstellen.</p>
<pre><code class="language-cpp">TForm* window;
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TForm* form)
	: TForm(Owner)
{
	window = form;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
	window = new TForm(NULL);
}
</code></pre>
<p>Es kommt nun die Fehlermeldung &quot;Mehrdeutigkeit zwischen Forms::TForm::TForm::(Classes::TComponent*) und Forms::TForm::TForm(void*)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769890</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Mon, 18 Apr 2005 20:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Mon, 18 Apr 2005 20:38:57 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du kannst den Konstruktor von TForm2 nicht so verändern! Der bestehende parameter hat schießlich eine Bedeutung.<br />
Das sollte funktionieren (zusätzlich must du die Deklararion von TForm2 im Header entsprechend ändern) :</p>
<pre><code class="language-cpp">__fastcall TForm2::TForm2(TComponent* Owner, TForm* form)
    : TForm(Owner)
{
    window = form;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
    window = new TForm(NULL);
}

Form2 = new TForm2(NULL, Form3);
</code></pre>
<p>allerdings verstehe ich ButtonClick nicht.<br />
window ist doch bereits zugewiesen, warum wird dann noch einmal ein neue Zuordnung ohne Zusammenhang gemacht? Zumal du eine Instanz von TForm erzeugst. Normalerweise erzeugt man Instanzen von TForm abgeleiteten Klassen, wie dem Standardtyp TForm1.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769894</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 18 Apr 2005 20:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Mon, 18 Apr 2005 21:49:52 GMT]]></title><description><![CDATA[<p>In meiner Hauptform Form1 erzeuge ich eine Instanz Form2 der Klasse TForm2 zur Laufzeit mit dem ButtonClick, ich möchte dabei den Zeiger der Klasse TForm3<br />
*Form3 über den Konstruktor an Form2 übergeben.<br />
Das Formular Form2 erscheint.</p>
<pre><code class="language-cpp">//Form1
#include &quot;Unit1.h&quot;
#include &quot;Unit2.h&quot;
#include &quot;Unit3.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	Form2 = new TForm2(NULL,Form3);   //Instanz der Klasse TForm2 erzeugen
}
//---------------------------------------------------------------------------
</code></pre>
<p>Nun möchte ich in Form2 über den übergebenen Zeiger Form3 mit dem ButtonClick eine Instanz der Klasse TForm3 erzeugen, analog zum erzeugen des Objekts Form2 der Klasse TForm2.</p>
<pre><code class="language-cpp">//Form2
#include &quot;Unit2.h&quot;
#include &quot;Unit3.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm* window;
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner,TForm* form)
	: TForm(Owner)
{
	window = form;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
	window = new TForm(NULL); //Instanz der Klasse TForm3 erzeugen    
}
//---------------------------------------------------------------------------
</code></pre>
<p>Ich glaube allerdings irgendetwas passt da nicht.</p>
<p>Ich möchte eigentlich folgendes machen.<br />
Über einen Menupunkt wähle ich eine Aktion aus, welche das öffnen eines<br />
bestimmten Formulars zur Folge hat.<br />
In das Formular gelangt man allerdings nur durch Eingabe eines Passwords<br />
-&gt;Form2, ist das Password korrekt wird über den Zeiger das gewünschte Formular<br />
-&gt;Form3 zur laufzeit erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769948</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Mon, 18 Apr 2005 21:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Mon, 18 Apr 2005 21:54:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Ich glaube allerdings irgendetwas passt da nicht.</p>
</blockquote>
<p>Das ist keine ausreichende Fehlerbeschreibung!</p>
<p>Hast du die Konstruktordeklaration von Form2 im Headerdatei angepaßt?</p>
<p>und hier hast du einen Schreibfehler drin :</p>
<pre><code class="language-cpp">window = new TForm(NULL); //Instanz der Klasse TForm3 erzeugen
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769951</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 18 Apr 2005 21:54:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Mon, 18 Apr 2005 22:08:58 GMT]]></title><description><![CDATA[<blockquote>
<p>Hast du die Konstruktordeklaration von Form2 im Headerdatei angepaßt?</p>
</blockquote>
<p>Habe ich</p>
<pre><code class="language-cpp">class TForm2 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
	TButton *Button1;
	void __fastcall Button1Click(TObject *Sender);
private:	// Anwender-Deklarationen

public:		// Anwender-Deklarationen
	__fastcall TForm2(TComponent* Owner,TForm* form);
};
</code></pre>
<blockquote>
<p>und hier hast du einen Schreibfehler drin :<br />
C/C++ Code:<br />
window = new TForm(NULL); //Instanz der Klasse TForm3 erzeugen<br />
C/C++ Code:</p>
</blockquote>
<p>Das meine ich mit &quot;Ich glaube allerdings irgendetwas passt da nicht&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769956</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Mon, 18 Apr 2005 22:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Tue, 19 Apr 2005 07:53:31 GMT]]></title><description><![CDATA[<p>Wenn du in Form2 eine Instanz von TForm3 erstellen willst, mußt du doch nichts im Konstruktor übergeben. Es reicht hier den Header von TForm3 bei der cpp von TForm2 einzubinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770060</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 19 Apr 2005 07:53:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Tue, 19 Apr 2005 21:22:59 GMT]]></title><description><![CDATA[<p>Ich möchte aber nicht nur Form3 sonder auch Form4 oder Form5 oder Form6 ....<br />
in Form2 erstellen.<br />
Deshalb möchte ich den Object Pointer einer Form über den Konstruktor übergeben.<br />
Oder anders:<br />
ich habe eine Klasse abc.<br />
Ich erstelle zwei Objekte der Klasse abc, x und y in Form1.<br />
Ich erstelle zur Laufzeit Form2 und übergebe im Konstruktor den Datentyp abc*.<br />
Nun kann ich Form2 entweder auf das Objekt x oder y der Klasse abc zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770752</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Tue, 19 Apr 2005 21:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger einer Form mit dem Konstruktor übergenen und dann zur Laufzeit erzeugen on Wed, 20 Apr 2005 08:20:49 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich möchte aber nicht nur Form3 sonder auch Form4 oder Form5 oder Form6 ....<br />
in Form2 erstellen.</p>
</blockquote>
<p>Wo ist jetzt das Problem?</p>
<blockquote>
<p>Deshalb möchte ich den Object Pointer einer Form über den Konstruktor übergeben.</p>
</blockquote>
<p>Dann mußt du aber trotzdem die entsprechenden Header einbinden.</p>
<blockquote>
<p>Ich erstelle zur Laufzeit Form2 und übergebe im Konstruktor den Datentyp abc*.<br />
Nun kann ich Form2 entweder auf das Objekt x oder y der Klasse abc zugreifen.</p>
</blockquote>
<p>Warum kann Form2 die Instanzen der Klasse abc nicht selber erstellen?<br />
Außerdem übergibst du damit keinen Datentyp (was immer das sein mag) sondern nur einen Pointer. Bekannt machen, (Header includiern) mußt du den Typ trotzdem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/770932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/770932</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 20 Apr 2005 08:20:49 GMT</pubDate></item></channel></rss>