<?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[Kombonenten zur Laufzeit verändern]]></title><description><![CDATA[<p>Ich schon wieder -.-</p>
<p>jaja, ich weis, nich als anfänger gleich solche aufgaben vornehmen, aber wie bereits erwähnt is es dringend!</p>
<p>Also:</p>
<p>ich hab eine Form auf der ich durhc Button-Druck zur laufzeit neue Objekte erstellen soll!</p>
<p>Das klappt, habs erst mit labels probiert und dann mit TabControls. Beides Hat funktioniert.</p>
<p>Ich muss aber irgendwie hinbekommen, das ich jetzt diese erstellten Objekte zur laufzeit per maus verschieben kann!<br />
-.- wie bekomm ich das am besten hin und was is dazu sinnvoll? Ich benötige eine art &quot;Box&quot; in die ich wiederrum neue Elemte erzeugen kann..<br />
Diese Box muss ich zur laufzeit erstellen, verschieben und die grösse ändern können.<br />
Zudem muss der Name der &quot;Box&quot; angezeigt werden. ist das möglich?<br />
Kann ich keine Fenster erzeugen wie das der FOrm, nur ohne die zusätzlichen Icons oben?</p>
<p>MfG Puccini</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192835/kombonenten-zur-laufzeit-verändern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 22:49:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192835.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Sep 2007 09:38:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 09:38:48 GMT]]></title><description><![CDATA[<p>Ich schon wieder -.-</p>
<p>jaja, ich weis, nich als anfänger gleich solche aufgaben vornehmen, aber wie bereits erwähnt is es dringend!</p>
<p>Also:</p>
<p>ich hab eine Form auf der ich durhc Button-Druck zur laufzeit neue Objekte erstellen soll!</p>
<p>Das klappt, habs erst mit labels probiert und dann mit TabControls. Beides Hat funktioniert.</p>
<p>Ich muss aber irgendwie hinbekommen, das ich jetzt diese erstellten Objekte zur laufzeit per maus verschieben kann!<br />
-.- wie bekomm ich das am besten hin und was is dazu sinnvoll? Ich benötige eine art &quot;Box&quot; in die ich wiederrum neue Elemte erzeugen kann..<br />
Diese Box muss ich zur laufzeit erstellen, verschieben und die grösse ändern können.<br />
Zudem muss der Name der &quot;Box&quot; angezeigt werden. ist das möglich?<br />
Kann ich keine Fenster erzeugen wie das der FOrm, nur ohne die zusätzlichen Icons oben?</p>
<p>MfG Puccini</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368298</guid><dc:creator><![CDATA[Puccini]]></dc:creator><pubDate>Wed, 19 Sep 2007 09:38:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 09:49:33 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>doch, du kannst neue Forms zur Laufzeit erzeugen und denen dann verschiedene BorderStyles zuweisen (z.B. bsNone für keine Titelleiste).</p>
<p>Siehe auch TBorderIcons:</p>
<p>Auszug aus der BCB-Hilfe zu TBorderIcons schrieb:</p>
<blockquote>
<p>The following code removes a form’s Maximize button when the user clicks a button:</p>
<p>void __fastcall TForm1::Button1Click(TObject *Sender)</p>
<p>{<br />
TBorderIcons tempBI = BorderIcons;<br />
tempBI &gt;&gt; biMaximize;<br />
BorderIcons = tempBI;<br />
}</p>
</blockquote>
<p>Zum verschieben von Komponenten zur Laufzeit mal <a href="http://www.bytesandmore.de/rad/cpp/snipp/sc02036.php" rel="nofollow">hier</a> lesen.</p>
<p>mfg, Micha!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368310</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 19 Sep 2007 09:49:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 11:35:29 GMT]]></title><description><![CDATA[<p>Thx für die Coole Site!</p>
<p>Leider gibts ein Problem mit dem Code.<br />
Der Compiler meckert zwar nich, jedoch kann ich meine Buttons die ich auf der Form1 habe nicht verschieben!</p>
<p>Woran könnte das jetzt liegen? An meiner Borland Version??<br />
Version 10.0.2151.25345</p>
<p>Oder muss ich noch irgendetwas importieren um die API-Funktionalität zu nutzen??</p>
<p>MfG Puccini</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368395</guid><dc:creator><![CDATA[Puccini]]></dc:creator><pubDate>Wed, 19 Sep 2007 11:35:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 12:19:25 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich gehe davon aus das der Quellcode vom Link korrekt ist. Also hast du etwas falsch gemacht bzw vergessen. Vermutlich vergessen die Events den Methoden zuzuweisen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368432</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 19 Sep 2007 12:19:25 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 12:30:33 GMT]]></title><description><![CDATA[<p>Die Events den Methonde zuweisen??</p>
<p>o.O<br />
Wie mach ich das denn nun wieder?<br />
Mein Problem ist halt, das nach dem Laden der Form noch weiter Elemente durch Knopfdruck erzeugt werden können und diese Sollen verschoben werden.</p>
<p>Also Events den Methoden zuweisen?</p>
<p>Wäre cool wenn auch das noch wer mir erklären könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Ich hab mir den Quellcode des Progs mal angeschaut und keine Unterschiede feststellen..</p>
<p>:&lt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368451</guid><dc:creator><![CDATA[Puccini]]></dc:creator><pubDate>Wed, 19 Sep 2007 12:30:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 12:49:01 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Nehmen wir mal an du hast einen neuen Button erstell</p>
<pre><code class="language-cpp">TButton* Button = new TButton(this);
</code></pre>
<p>und willst dem nun den auszuführenden Quellcode zuweisen, der in</p>
<pre><code class="language-cpp">void __fastcall TForm::ButtonClick(TObject* Sender)
{
}
</code></pre>
<p>steht. Dann must du die Methode zu dem Event zuweisen :</p>
<pre><code class="language-cpp">Button-&gt;OnClick = ButtonClick;
</code></pre>
<p>Das kannst du auch mit allen anderen Events machen, solange die Methode dazu passt.</p>
<p>/Edit : Code korrigiert.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368459</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 19 Sep 2007 12:49:01 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 12:40:08 GMT]]></title><description><![CDATA[<p>Aha, alles klar. Klingt logisch ^^</p>
<p>Aber:</p>
<p>Das is ja nich das was die Methode mit dem verschieben betrifft! oder?<br />
Wenn ich mir die Beispielexe ansehe, kann ich entweder Verschieben, oder Klicken!</p>
<p>Also wird doch das event des Buttons der verschoben werden soll bei Klick garnicht ausgelöst sonder die Methode MoveControls oder??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368464</guid><dc:creator><![CDATA[Puccini]]></dc:creator><pubDate>Wed, 19 Sep 2007 12:40:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 12:51:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>siehe im Code des Beispiels...</p>
<pre><code class="language-cpp">if(pControl != chkAllowMove &amp;&amp; chkAllowMove-&gt;Checked) {...}
</code></pre>
<p>Die Methode MoveControl wird also nur aufgerufen wenn die CheckBox <em>chkAllowMove</em> != 0 und das Control nicht selber die CheckBox ist.</p>
<p>Wichtig ist im FormShow die Zeile</p>
<pre><code class="language-cpp">Application-&gt;OnMessage = OnAppMessage; //Hier wird die Methode &quot;OnAppMessage&quot; dem Event &quot;OnMessage&quot; zugewiesen.
</code></pre>
<p>mfg, Micha</p>
<p>P.S. <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a></p>
<pre><code class="language-cpp">TButton* Button = new wxButton(this); // ?  :D
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1368474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368474</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 19 Sep 2007 12:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Wed, 19 Sep 2007 13:08:59 GMT]]></title><description><![CDATA[<p>Hmm, das hab ich alles!</p>
<p>Das einzige was ich erstmal nich Übernommen habe sind die SPeichern- und Restoremethoden!</p>
<p>:&lt;<br />
Is doch komisch.....</p>
<p>leider hab ich gleichfeierabend, aber ich werd mal den quellcode den ich habe post!</p>
<p>vielleicht hiflt das ja dem einen oder anderen?<br />
Unit1.cpp</p>
<pre><code>//$$---- Form CPP ----
//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;
#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	aktiveEbene=&quot;Erdgeschoss&quot;;
	ebeneIndex=1;
	anzraum[ebeneIndex]=0;
	Etage1-&gt;Visible=false;
	Etage2-&gt;Visible=false;
	Erdgeschoss-&gt;Visible=true;
	Untergeschoss-&gt;Visible=false;

}
void __fastcall TForm1::FormShow(TObject *Sender)
{
	//hilfspannel zum verschieben
	pHelpPanel-&gt;Parent=this;
	pHelpPanel-&gt;BorderStyle =bsNone;
	pHelpPanel-&gt;BevelInner =bvNone;
	pHelpPanel-&gt;BevelOuter =bvNone;
	pHelpPanel-&gt;Caption =&quot;&quot;;
	pHelpPanel-&gt;FullRepaint =false;
	pHelpPanel-&gt;Visible = false;
	//Eigene Botschaftsroutine hinzufügen
	Application-&gt;OnMessage=OnAppMessage;
}
void __fastcall TForm1::OnAppMessage(tagMSG &amp;Message,bool &amp;Handled)
{
	//Linke Maustaste abfragen
	if(Message.message == WM_LBUTTONDOWN)
	{
		//Zeiger auf das Steuerelement unter demMauscursor
		TControl * pControl=ControlAtPos(ScreenToClient(Message.pt),false,true);
		//wenn Chekcbox &quot;Elemente verschieben&quot; angehackt ist
		if (chkVerschieben-&gt;Checked)
		{
			//Steuerelement auf Unterobjekte überprüfen
			if (pControl) {
				TWinControl* pCmp=dynamic_cast&lt;TWinControl*&gt;(pControl);
				TControl* pCtrl;
				while(pCmp)
				{
					pCtrl=dynamic_cast&lt;TControl*&gt;(pCmp-&gt;ControlAtPos(pCmp-&gt;ScreenToClient(Message.pt),false,true));
					pCmp=dynamic_cast&lt;TWinControl*&gt;(pCtrl);
					if(pCmp) pControl=pCmp;
					else if(pCtrl) pControl=pCtrl;
				}
			}
			//Control verschieben
			Form1-&gt;Close();
			MoveControl(pControl);
			Handled=true;
		}
	}
}
//Funktion zum verschieben:
void __fastcall TForm1::MoveControl(TControl* pControl)
{
	//versuch Zeiger der Komponente in TWinControl umzucasten
	TWinControl* pWinControl=dynamic_cast&lt;TWinControl*&gt;(pControl);
	//falls Umwandlung erfolgreich
	if(pWinControl)
	{
		//Verschieben-Modus aktivieren
		ReleaseCapture();
		pWinControl-&gt;Perform(WM_SYSCOMMAND, SC_MOVE+HTCAPTION,0);
	}
	//falls eine &quot;Nicht-Fenster-Orientiere&quot; Komponente verschoben werden soll
	else if(pControl)
	{
		//Hilfspanel entsprechend anpassen
		pHelpPanel-&gt;Parent=pControl-&gt;Parent;
		pHelpPanel-&gt;Left=pControl-&gt;Left;
		pHelpPanel-&gt;Top=pControl-&gt;Top;
		pHelpPanel-&gt;Width=pControl-&gt;Width;
		pHelpPanel-&gt;Height=pControl-&gt;Height;
		//das zu verschiebende Steuerelement auf Hilfspannel plaziern
		TWinControl* pSaveParent=pControl-&gt;Parent;
		pControl-&gt;Parent=pHelpPanel;
		pControl-&gt;Left=0;
		pControl-&gt;Top=0;
		pHelpPanel-&gt;Visible=true;
		Application-&gt;ProcessMessages();

		//Verschiebemodus aktiviren für Hilfspanel
		ReleaseCapture();
		pHelpPanel-&gt;Perform(WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);

		//Nach dem verschieben das steuerelement wieder auf Formular platzieren
		pControl-&gt;Parent=pSaveParent;
		pControl-&gt;Left=pHelpPanel-&gt;Left;
		pControl-&gt;Top=pHelpPanel-&gt;Top;
		pHelpPanel-&gt;Visible=false;
    }
}

//---------------------------------------------------------------------------
void __fastcall TForm1::bRaumClick(TObject *Sender)
{
	myTab=new TShape(this);
	myTab-&gt;Parent=Form1;
	myTab-&gt;Top=(anzraum[ebeneIndex]+1)*15;
	myTab-&gt;Visible=true;
	myTab-&gt;Name=&quot;Raum_&quot;+ERaumName-&gt;Text+AnsiString(anzraum[ebeneIndex]);
	myTab-&gt;Hint=ERaumName-&gt;Text;
	myTab-&gt;ShowHint=true;
	myTab-&gt;Height=50;
	myTab-&gt;Width =50;

	arrayraum[anzraum[ebeneIndex&rsqb;&rsqb;[ebeneIndex][0]=1;
	nameRaum[ebeneIndex][anzraum[ebeneIndex&rsqb;&rsqb;=ERaumName-&gt;Text;
	anzraum[ebeneIndex]++;
	Form1-&gt;Caption=&quot;Anzahl Räume auf Ebene &quot;+aktiveEbene+&quot;: &quot;+AnsiString(anzraum[ebeneIndex]);
}
</code></pre>
<p>unit1.h</p>
<pre><code>//$$---- Form HDR ----
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;
#include &lt;Buttons.hpp&gt;
#include &lt;Controls.hpp&gt;
#include &lt;ExtCtrls.hpp&gt;
#include &lt;jpeg.hpp&gt;
#include &lt;Menus.hpp&gt;
#include &lt;StdCtrls.hpp&gt;
#include &lt;Forms.hpp&gt;
#include &lt;ComCtrls.hpp&gt;
#include &lt;Graphics.hpp&gt;
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
	TImage *Etage1;
	TImage *Etage2;
	TImage *Erdgeschoss;
	TBitBtn *button_1etage;
	TBitBtn *button_2etage;
	TBitBtn *button_erdgeschoss;
	TBitBtn *button_untergeschuss;
	TImage *Untergeschoss;
	TMainMenu *MainMenu1;
	TMenuItem *Datei1;
	TMenuItem *Laden1;
	TMenuItem *Speichern1;
	TMenuItem *Schliessen1;
	TMenuItem *N1;
	TMenuItem *About1;
	TMenuItem *Hilfe1;
	TBitBtn *bRaum;
	TEdit *ERaumName;
	TCheckBox *chkVerschieben;

	void __fastcall button_1etageClick(TObject *Sender);
	void __fastcall button_untergeschussClick(TObject *Sender);
	void __fastcall button_2etageClick(TObject *Sender);
	void __fastcall button_erdgeschossClick(TObject *Sender);
	void __fastcall UntergeschossClick(TObject *Sender);
	void __fastcall RRaumClick(TObject *Sender);
	void __fastcall RRechnerClick(TObject *Sender);
	void __fastcall bRaumClick(TObject *Sender);
	void __fastcall FormShow(TObject *Sender);
	void __fastcall Schliessen1Click(TObject *Sender);
	void __fastcall aktivTabMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
private:	// User declarations
	TPanel *pHelpPanel;
public:		// User declarations
	void ebenewechseln();
	void bild_klick();
	//Zum verschieben der Komponenten zur laufzeit:
	//Botschaftsbehandlung der Application
	void __fastcall OnAppMessage(tagMSG &amp;Message,bool &amp;Handled);
	//Funktion zum verschieben
	void __fastcall MoveControl(TControl* Sender);
	//Speichern
	bool SaveControlsPositions(void);
	//Laden
	bool RestoreControlsPositions(void);
	AnsiString aktiveEbene;
	TShape *myTab;
	TShape *aktivTab;	//ist der Aktuell angeklickte Raum
	int ebeneIndex;     //0=Untergeschoss,1=Erdgeschoss,2=Erste Etage,3=Zweite Etage
	int anzraum[6];		//Anzahl aller bereits Angelegten Räume pro Ebene
	AnsiString nameRaum[6][500];	//Name der Räume pro Ebene (Ebene,Raumindex)
	int arrayraum[500][6][4];	//Array aller Räume (max. 500),EbenenIndex,Positionierung(x,y,breit,hoch)
	__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>Ein paar funktionenhab ich rausgeschnitten, um nich alzuviel paltz zu verbrauchen!</p>
<p>Aber so wie es jetzt steth sollte es dohc auch funktionieren oder??<br />
Is meinermeinung nach genau das gleich! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /><br />
pls help :&lt;</p>
<p>MfG Puccini</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368499</guid><dc:creator><![CDATA[Puccini]]></dc:creator><pubDate>Wed, 19 Sep 2007 13:08:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Thu, 20 Sep 2007 07:08:29 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>ich hab noch etwas rumgetüftetl und festgestellt, das meine Methode:<br />
OnAppMessage nie aufgerufen wird!!<br />
Woran könnte das liegen??</p>
<p>Zudem hätte ich noch eine frage,</p>
<p>Ich erstelle neue TShapes zur laufzeit welche alle auf die Selebe Funktion:<br />
aktivTabMouseDown bei Mausklick reagieren sollen. Das klappt auch!<br />
Nur wie ermittel ich innerhalb der Methode aktivTabMouseDown jetzt welches Shape ich gedrück habe??</p>
<p>Wäre echt cool wenn einer hier helfen könnte! Ich bin glaub ich zu blöd zu sowas zu sehen -.- kenn mich eher mit anderen Programmiersprachen aus, welche keine Zeiger verwenden..</p>
<p>MfG Puccini</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368972</guid><dc:creator><![CDATA[Puccini]]></dc:creator><pubDate>Thu, 20 Sep 2007 07:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kombonenten zur Laufzeit verändern on Thu, 20 Sep 2007 10:07:45 GMT]]></title><description><![CDATA[<p>Sorry für 3-Fach-Post, aber ich kann meine Beiträge nich editieren, da ich nich registriert bin!</p>
<p>Das Problem mit &quot;Komponente unter der Maus&quot; hab ich hinbekommen!</p>
<pre><code>TPoint mauspos;
::GetCursorPos(&amp;mauspos);
TControl * unterMaus=ControlAtPos(mauspos,false,true);
aktivTab=dynamic_cast&lt;TShape*&gt;(unterMaus);
</code></pre>
<p>Damit hab ich die Komponente unter der Maus beim Anklicken in &quot;aktivTab&quot; übernommen und kann die so bearbeiten oder?<br />
Und das mit dem verschieben klapp immer noch net! Schade! keiner eine Idee?????????????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369083</guid><dc:creator><![CDATA[Puccini]]></dc:creator><pubDate>Thu, 20 Sep 2007 10:07:45 GMT</pubDate></item></channel></rss>