<?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[Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen?]]></title><description><![CDATA[<p>Ich wünsche einen, hoffentlich, guten Montag Morgen.</p>
<p>Ich habe hier ein kleines Problem. Und zwar habe ich eine Klasse A (beispielhafter Name) geschrieben, die ich in einer simplen Form Anwendung verwende. Ein Objekt dieser Klasse wird im Formular erzeugt. Nun möchte ich allerdings in Funktionen INNERHALB dieser Klasse A auf das Formular zugreifen.</p>
<p>Ein Beispiel: Es liegt ein TShape im Formular. Dieses möchte ich mittels der Eigenschaft Top verschieben. Das Ganze möchte ich allerdings in einer Funktion in Klasse A machen.</p>
<p>Mein erster Ansatz war einfach einen Wertekonstruktor zu benutzen und diesem einen Zeiger auf Form zu verpassen. Vor der Implementierung der Klasse A hat das wunderbar funktioniert. Sobald ich sie implementiert hatte war es geschehen. (A.h ist im Header von Form1 eingebunden. Objekt von A wird unter public der Form Klasse erzeugt.</p>
<p>Das Problem ist ich bräuchte relativ dringend Hilfe. Auch wenn das Problem für einige Trivial ist. Ich bin eben noch im Anfangsstadium der Oberflächenprogrammierung.</p>
<p>Vielen Dank für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176901/sehr-dringend-objekt-einer-klasse-wird-innerhalb-eines-forms-erzeugt-wie-in-der-klasse-auf-form-zugreifen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 06:27:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176901.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Mar 2007 09:03:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 09:03:00 GMT]]></title><description><![CDATA[<p>Ich wünsche einen, hoffentlich, guten Montag Morgen.</p>
<p>Ich habe hier ein kleines Problem. Und zwar habe ich eine Klasse A (beispielhafter Name) geschrieben, die ich in einer simplen Form Anwendung verwende. Ein Objekt dieser Klasse wird im Formular erzeugt. Nun möchte ich allerdings in Funktionen INNERHALB dieser Klasse A auf das Formular zugreifen.</p>
<p>Ein Beispiel: Es liegt ein TShape im Formular. Dieses möchte ich mittels der Eigenschaft Top verschieben. Das Ganze möchte ich allerdings in einer Funktion in Klasse A machen.</p>
<p>Mein erster Ansatz war einfach einen Wertekonstruktor zu benutzen und diesem einen Zeiger auf Form zu verpassen. Vor der Implementierung der Klasse A hat das wunderbar funktioniert. Sobald ich sie implementiert hatte war es geschehen. (A.h ist im Header von Form1 eingebunden. Objekt von A wird unter public der Form Klasse erzeugt.</p>
<p>Das Problem ist ich bräuchte relativ dringend Hilfe. Auch wenn das Problem für einige Trivial ist. Ich bin eben noch im Anfangsstadium der Oberflächenprogrammierung.</p>
<p>Vielen Dank für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252729</guid><dc:creator><![CDATA[Shogun]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 09:06:35 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Mein erster Ansatz war einfach einen Wertekonstruktor zu benutzen und diesem einen Zeiger auf Form zu verpassen.</p>
</blockquote>
<p>Das ist auch der richtige Ansatz</p>
<blockquote>
<p>Vor der Implementierung der Klasse A hat das wunderbar funktioniert. Sobald ich sie implementiert hatte war es geschehen. (A.h ist im Header von Form1 eingebunden. Objekt von A wird unter public der Form Klasse erzeugt.</p>
</blockquote>
<p>Was verstehst du unter &quot;war es geschehen&quot;? Fehlermeldung? Code?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252730</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:06:35 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 13:41:16 GMT]]></title><description><![CDATA[<p>Ach sorry falsche Formulierung. Ich habe das auf dem Sprung zu einem Kunden geschrieben.</p>
<p>Also folgendes. Standard C++ Builder Form Anwendung. Ich habe eine Klasse CElevator erzeugt (Bin etwas eingerostet und spiele nun ein wenig rum um wieder rein zu kommen. Also bitte nicht über die Sinnlosigkeit des Programms lachen. Es geht um grundlegene Dinge. Diese Kommunikation Klasse&lt;-&gt;Form werde ich brauchen.)</p>
<p>Der Header der Klasse ist im Header des Forms eingebunden. Ich kopiere einfach mal die Header hier rein.</p>
<p>Hauptapplikation. Hier ist alles wie vom Builder erzeugt. Nichts geändert.</p>
<pre><code>//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM(&quot;Form.cpp&quot;, Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	try
	{
		Application-&gt;Initialize();
		Application-&gt;CreateForm(__classid(TForm1), &amp;Form1);
		Application-&gt;Run();
	}
	catch (Exception &amp;exception)
	{
		Application-&gt;ShowException(&amp;exception);
	}
	catch (...)
	{
		try
		{
			throw Exception(&quot;&quot;);
		}
		catch (Exception &amp;exception)
		{
			Application-&gt;ShowException(&amp;exception);
		}
	}
	return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Hier der Kopf des Forms.</p>
<pre><code>//---------------------------------------------------------------------------

#ifndef FormH
#define FormH
//---------------------------------------------------------------------------
#include &quot;CElevator.h&quot;
#include &lt;Classes.hpp&gt;
#include &lt;Controls.hpp&gt;
#include &lt;StdCtrls.hpp&gt;
#include &lt;Forms.hpp&gt;
#include &lt;ExtCtrls.hpp&gt;

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
	TRadioButton *OStateB1;
	TRadioButton *OStateB2;
	TRadioButton *StateCallUp;
	TRadioButton *StateCallDown;
	TButton *BCallUp;
	TButton *BCallDown;
	TRadioButton *IStateB1;
	TRadioButton *IStateB2;
	TButton *IB2;
	TButton *IB1;
	TImage *Image1;
	TShape *Shape1;
	TButton *Button1;
	TButton *Button2;
	void __fastcall Button1Click(TObject *Sender);
	void __fastcall Button2Click(TObject *Sender);
private:	// Benutzer-Deklarationen
public:		// Benutzer-Deklarationen
	int nWidthPB;
	int nHeightPB;
	__fastcall TForm1(TComponent* Owner);
	void TForm1::DrawElevator();

};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>Und der Kopf meiner Klasse:</p>
<pre><code>//---------------------------------------------------------------------------
#include &lt;Form.h&gt;
#ifndef CElevatorH
#define CElevatorH

	class CElevator {
		public:
			//Konstruktor
			CElevator ();
//			CElevator (TForm1* fom) {Formu=fom;};
			//Destruktor
			~CElevator ();
//			TForm1* Formu;
			//Drücken der Knöpfe
			void Press_Up();
			void Press_Down();
			void Press_G();
			void Press_B();

		private:
			//Standort des Fahrstuhls. -1 fährt, 1 Bahnsteig, 2 Galerie
			int nFloor;

			//Tür 0 geschlossen, 1 offen
			bool bDoor;

			//Kontrolllampen outside/inside Bahnsteig/Galerie
			bool bLoG;
			bool bLoB;
			bool bLiG;
			bool bLiB;

			//Tür offen oder geschlossen?
			bool Check_Door();
			void Open_Door();
			void Close_Door();

			//Wo steht der Fahrstuhl gerade?
			int Check_Floor();

			//Motorsteuerung
			void CElevator::Motor(int nDir);

	};
</code></pre>
<p>Aufruf sollte dann im public: Bereich des Forms geschehen. Bzw. Das Objekt soll da erzeugt werden.</p>
<p>CElevator Elev(this);</p>
<p>Der Compiler meldet mir allerdings dann bei</p>
<p>CElevator (TForm1* fom) {Formu=fom;};</p>
<p>, daß er einen Datentyp will. Verwende ich ein normales Form, so habe ich zwar ein Formular, aber eben die Buttons und so nicht</p>
<p>Ich weiß es ist viel Arbeit in den Code zu schauen. Aber was nützt es wenn ich 20 Seiten drumrum erkläre...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252985</guid><dc:creator><![CDATA[Shogun]]></dc:creator><pubDate>Mon, 26 Mar 2007 13:41:16 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 13:45:56 GMT]]></title><description><![CDATA[<p>Shogun schrieb:</p>
<blockquote>
<p>Aufruf sollte dann im public: Bereich des Forms geschehen. Bzw. Das Objekt soll da erzeugt werden.</p>
<p>CElevator Elev(this);</p>
</blockquote>
<p>um das Objekt zu erstellen mußt du in public von TForm einfach nur</p>
<pre><code class="language-cpp">CElevator *Elev;
</code></pre>
<p>angeben, im Konstruktor von TForm muß dann</p>
<pre><code class="language-cpp">Elev = new CElevator(this);
</code></pre>
<p>stehen und im Destruktor von TForm</p>
<pre><code class="language-cpp">delete Elev;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1252989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252989</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Mon, 26 Mar 2007 13:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 13:50:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Du hast noch einen Cross-Include : Der Form-Header bindet den Elevator-Header ein, und der Elevator-Header bindet den Form-Header ein. Der Compiler landet in einer Endlosschleife und bricht die mit einer zugegebenermaßen nicht aussagekräftigen Fehlermeldung ab.</p>
<p>Um das Problem zu lösen must du nur eine Forward Declaration verwenden :<br />
Verlagere den Include des Form-Headers vom Elevator-Header in die Elevator-Implementation. Und im Elevator-Header fügst du stattdessen vor der Klassendefinition noch</p>
<pre><code class="language-cpp">class TForm1;
</code></pre>
<p>ein. Da du im folgenden Header nun nur Pointer auf Form1 verwendest kommt der Compiler damit zurecht.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252991</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 26 Mar 2007 13:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 14:04:09 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Die Kombination beider Posts hat perfekt funktioniert.<br />
Ich muss noch vieeeel lernen. Leider sind es solche kleinen Dinge, die mich immer aufhalten.</p>
<p>Was bedeutet &quot;class TForm1;&quot; nun genau? Das ist einfach nur die Definition der Klasse und fertig?</p>
<p>Auf alle Fälle vielen Dank für die extrem schnelle und treffende Hilfe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Habe noch kein Forum erlebt, in dem das so flott und ohne große Diskussionen geht. Hier bleib ich gerne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüße Shogun</p>
<p>EDIT: Ahhh! Ich habs verstanden. Googlen hilft manchmal wunder. Diese Form ist die Forward Declaration. Lasse die dumme Frage trotzdem mal stehen für die Suchfunktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253001</guid><dc:creator><![CDATA[Shogun]]></dc:creator><pubDate>Mon, 26 Mar 2007 14:04:09 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 14:06:42 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das sagt dem Compiler das es eine Klasse namens TForm1 gibt. Mehr nicht. Damit kann der Compiler Pointer und Referenzen auf diese Klasse behandeln. Mehr aber nicht.<br />
Das heißt um die Member der Klasse nun effektiv benutzen zu können must du noch den Include nachschieben, und den brauchst du eben erst in der Implementationsdatei.</p>
<p>/Edit : zu langsam...</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253004</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 26 Mar 2007 14:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 14:05:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>das mit dem gegenseitigen include könntest Du in diesem Fall auch ohne<br />
Forward-Deklaration auflösen. Da Du in der Header-Datei des Formulars die<br />
Klasse CElevator nicht referenzierst, brauchst Du hier auch kein include<br />
darauf. Du kannst den include einfach in die .cpp verschieben.</p>
<p>Falls Deine Formularklasse doch CElevator kennen muss (z.B. Member-Variable),<br />
dann ist die Forward-Deklaration wohl die einfachste Lösung.</p>
<p>Gruß</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253005</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Mon, 26 Mar 2007 14:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to Sehr dringend: Objekt einer Klasse wird innerhalb eines Forms erzeugt. Wie IN der Klasse auf Form zugreifen? on Mon, 26 Mar 2007 14:14:46 GMT]]></title><description><![CDATA[<p>Ihr seid echt schneller als die Polizei erlaubt. Dankeschön.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253014</guid><dc:creator><![CDATA[Shogun]]></dc:creator><pubDate>Mon, 26 Mar 2007 14:14:46 GMT</pubDate></item></channel></rss>