<?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 Form ein Objekt on reference übergeben]]></title><description><![CDATA[<p>Hallo zusammen,<br />
der Titel sag schon alles. Ich habe in einem Form a ein Form b mit<br />
Application-&gt;CreateForm(__classid(Tb), &amp;b); erzeugt. In Form a habe ich auch ein neues Objekt angelegt: z.B. myObj. Wie muss ich nun meine Form b.cpp und Form b.h erweitern damit ich auch das Objekt myObj in Form b verändern kann?</p>
<p>lg,<br />
blitzgeist</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178974/einem-form-ein-objekt-on-reference-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 10:50:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178974.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Apr 2007 09:47:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 09:47:33 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
der Titel sag schon alles. Ich habe in einem Form a ein Form b mit<br />
Application-&gt;CreateForm(__classid(Tb), &amp;b); erzeugt. In Form a habe ich auch ein neues Objekt angelegt: z.B. myObj. Wie muss ich nun meine Form b.cpp und Form b.h erweitern damit ich auch das Objekt myObj in Form b verändern kann?</p>
<p>lg,<br />
blitzgeist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267602</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 09:47:33 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 10:06:50 GMT]]></title><description><![CDATA[<p>du kannst z.B. den Konstruktor des FormB anpassen, im Header</p>
<pre><code class="language-cpp">__fastcall TFormB(TComponent* Owner, TObject *myObj);
TObject *FmyObj;
</code></pre>
<p>in der CPP</p>
<pre><code class="language-cpp">__fastcall TFormB::TFormB(TComponent* Owner, TObject *myObj)
{
FmyObj = myObj;
}
//oder
__fastcall TFormB::TFormB(TComponent* Owner, TObject *myObj) : TForm(Owner), FmyObj(myObj)
{
}
</code></pre>
<p>und bei der Erstellung in FormA</p>
<pre><code class="language-cpp">Tb *b = new Tb(this,myObj);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1267614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267614</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Tue, 17 Apr 2007 10:06:50 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 10:16:11 GMT]]></title><description><![CDATA[<p>Danke für deine schnelle Antwort, probiere es gleich aus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267621</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 10:16:11 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 10:23:29 GMT]]></title><description><![CDATA[<p>Es klappt alles bis auf die Erstellung in Form A. Ich benutze ja dazu den Befehl<br />
Application-&gt;CreateForm(__classid(Tb), &amp;b);</p>
<p>Doch wie gebe ich meinem Form b die Refernz meines Objekts vo n b mit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267628</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 10:23:29 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 10:34:44 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>blitzgeist schrieb:</p>
<blockquote>
<p>Es klappt alles bis auf die Erstellung in Form A. Ich benutze ja dazu den Befehl<br />
Application-&gt;CreateForm(__classid(Tb), &amp;b);</p>
</blockquote>
<p>Dieser Aufruf ist eher VCL-Intern für automatisch generierte Forms.<br />
Da du dynamische Forms mit angepasstem Konstruktor hast must du die von Linnea gezeigte Variante mit new nehmen, dort kannst du deinen modifizierten Konstruktor benutzen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267634</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 17 Apr 2007 10:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 10:37:07 GMT]]></title><description><![CDATA[<p>Okay, dann werde ich es mit dieser Variante realisieren. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267636</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 10:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 10:59:52 GMT]]></title><description><![CDATA[<p>Ach ja nochwas zu</p>
<pre><code class="language-cpp">Tb *b = new Tb(this,myObj);
</code></pre>
<p>On reference muss es doch heißen:</p>
<pre><code class="language-cpp">Tb *b = new Tb(this, &amp;myObj);
</code></pre>
<p>Oder?<br />
Und warum wird noch ein this-Zeiger übergeben?</p>
<p>Und noch eine Frage:<br />
Wenn ich nun mein Form mit</p>
<pre><code class="language-cpp">Tb *b = new Tb(this,myObj);
</code></pre>
<p>anlege und dann die Methode</p>
<pre><code class="language-cpp">void __fastcall Tb::ButtonFertigClick(TObject *Sender)
{
    a-&gt;Top = b-&gt;Top;
}
</code></pre>
<p>aufrufe, stüzt das Programm ab, wieso passiert das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267638</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 10:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 11:14:46 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Ach ja nochwas zu...<br />
On reference muss es doch heißen:</p>
</blockquote>
<p>Linnea geht davon aus das du das Objekt auf dem Heap angelegt hast und als Pointer übergeben willst. Dann muß kein &amp; da rein.<br />
Da wir nicht wissen was MyObj für einen Typ hat und wie der Zusammenhang zum Form und Gültigkeit aussieht, können wir dazu nicht viel sagen.</p>
<blockquote>
<p>Und warum wird noch ein this-Zeiger übergeben?</p>
</blockquote>
<p>this ist in diesem Fall der Owner des neuen Forms. Du kannst auch NULL stattdessen übergeben, bist dann aber selber für das Löschen des Forms zuständig.</p>
<blockquote>
<p>Und noch eine Frage:<br />
Wenn ich nun mein Form mit<br />
...<br />
aufrufe, stüzt das Programm ab, wieso passiert das?</p>
</blockquote>
<p>Ausgehend von dem gezeigten Code gehe ich davon aus das du an den Konstruktor des Forms mit dem &amp; die Adresse eines lokalen Objekts übergibst, das beim Aufruf von <em>ButtonFertig</em> gar nicht mehr existiert. Ich empfehle die Grundlagen zum Thema Speicherverwaltung, Gültigkeit und OOP durchzuarbeiten.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267655</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 17 Apr 2007 11:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 12:01:23 GMT]]></title><description><![CDATA[<p>Hallo akari,</p>
<p>meine Konstruktorimplementierung sieht wie folgt aus:</p>
<pre><code class="language-cpp">__fastcall Tb::Tb(TComponent* Owner, Obj* myObj): TForm(Owner)
{
myFObj = myObj;
}
</code></pre>
<p>und in der b.h wie Linnea es gezeigt hat. Wenn ich nun einen Button anklicke gibt es doch noch mein Form b, also muss doch b-&gt;Top = xxx; funktionieren.</p>
<p>.<br />
.<br />
.<br />
.<br />
.<br />
Habe den Denkfehler gefunden. Ich darf nicht</p>
<pre><code class="language-cpp">void __fastcall Tb::ButtonFertigClick(TObject *Sender) 
{ 
    a-&gt;Top = b-&gt;Top; 
}
</code></pre>
<p>schreiben, sondern</p>
<pre><code class="language-cpp">void __fastcall Tb::ButtonFertigClick(TObject *Sender) 
{ 
    a-&gt;Top = this-&gt;Top; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1267692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267692</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 12:01:23 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 12:11:40 GMT]]></title><description><![CDATA[<p>Ja, das macht Sinn, aber hast Du auch schon herausgefunden, <em>warum</em> das so ist?<br />
Das this kannst Du übrigens auch getrost weglassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267700</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 17 Apr 2007 12:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 12:18:03 GMT]]></title><description><![CDATA[<p>@ Joe_M.,<br />
this ist ein Zeiger auf sich selbst, also auf das Objekt selbst. Also this-&gt;Top entspricht b-&gt;Top. This kann ich auch weglassen, jedoch mit this wird es deutlicher den Quellcode zu lesen. Somit wird vedeutlicht, dass ich eine Eigenschaft von b damit meine. Ist doch eher eine Geschmackssache, denke ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267704</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 12:18:03 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 12:22:20 GMT]]></title><description><![CDATA[<p>Ich meinte eigentlich eher, warum b-&gt;Top nicht funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267706</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 17 Apr 2007 12:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 12:24:58 GMT]]></title><description><![CDATA[<p>Hehe, achso. Weil es b nicht in b gibt, sondern nur die Eigenschaften von b.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267708</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 12:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 13:00:15 GMT]]></title><description><![CDATA[<p>Hi blitzgeist,</p>
<p>Mach mal ein neues Projekt auf und schreib z.B. in ein ButtonClick Event Form1-&gt;Top=0 oder so. Wieso funktioniert es da und bei b nicht?</p>
<p>mfg<br />
cb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267730</guid><dc:creator><![CDATA[carstenbauer]]></dc:creator><pubDate>Tue, 17 Apr 2007 13:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 13:05:14 GMT]]></title><description><![CDATA[<p>weil das Objekt Form1 mit extern deklariert wurde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267733</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 13:05:14 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 13:28:15 GMT]]></title><description><![CDATA[<p>(Form) a und (Form) b sind globale Variablen, denen in der Projektname.cpp, mittels CreateForm(), eine Instanz zugewiesen wird. Da aber b hier mit new erzeugt wird, kannst Du nicht mehr über 'b' darauf zugreifen, sondern nur noch über den Pointer, den Du beim new erhalten hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267746</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 17 Apr 2007 13:28:15 GMT</pubDate></item><item><title><![CDATA[Reply to einem Form ein Objekt on reference übergeben on Tue, 17 Apr 2007 13:41:00 GMT]]></title><description><![CDATA[<p>Okay, das vertieft mein Wissen bezüglich OOP, wieder um einen winzigen Prozentanteil <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="🙂"
    /> Danke an alle für die Beitäge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267755</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Tue, 17 Apr 2007 13:41:00 GMT</pubDate></item></channel></rss>