Zum Inhalt springen

Nicht der richtige Radiobutton markiert. Warum?


Empfohlene Beiträge

Geschrieben

Hallo Leute

es geht noch mal um mein Pong-Spiel.

Also: Wenn ich das Spiel starte, dann soll der Radiobutton 640 * 480 markiert sein andererseits soll man aber die Spielfeldgröße ändern können und dann der jeweilig ausgewählte Radiobutton markiert sein. Mein Problem ist, das ich das beides für sich gesehen hinbekomme, aber nicht beides zusammen.

In dieser Methode oder auch Funktion läuft alles zusammen, das heißt hier werden die Änderungen für das Spielfeld ausgeführt. Sie ist in meiner Hauptforma (Form1) zu finden.


private: System::Void spielfeldToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 

		 {

			 Point neueGroesse;


			 // bitte jeweils in einer Zeile eingeben


			 einstellungenDialog4 ^neueWerte = gcnew einstellungenDialog4(this->Width, this->Height, this->rahmenFarbe,this->malen);


			 // wenn der Dialog über OK beendet wird


			 if (neueWerte -> ShowDialog() == Windows::Forms::DialogResult::OK)

			 {

				 // die neue Größe holen


				 neueGroesse = neueWerte -> liefereWert();

				 spielfeld->BackColor = neueWerte->liefereBackColor();

				 rahmenFarbe = neueWerte->liefereRahmenColor();


				 // den Dialog wieder schließen


				 neueWerte -> Close();


				 // das Formular ändern


				 this -> Width = neueGroesse.X;

				 this -> Height = neueGroesse.Y;


				 // neu ausrichten


				 // bitte jeweils in einer Zeile eingeben


				 this -> Left = (Screen::PrimaryScreen -> Bounds.Width - this -> Width) / 2;

				 this -> Top = (Screen::PrimaryScreen -> Bounds.Height - this -> Height) / 2;


				 // die Zeichenfläche neu beschaffen


				 zeichenflaeche = spielfeld -> CreateGraphics();


				 // das Spielfeld neu setzen


				 setzeSpielfeld();


				 // Spielfeld löschen


				 zeichenflaeche -> Clear(spielfeld -> BackColor);


				 zeichneSpielfeld();

				 zeichnePunkte("0");

				 zeichneZeit("0");


				 // und einen neuen Ball und Schläger zeichnen


				 neuerBall();

			 }

		 };

};

}



Hier her werden alle Änderungen übergeben. Hier mal mein gesamter Code für die Einstellungen.

#pragma once


using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;



namespace Pong {


	/// <summary>

	/// Zusammenfassung für EinstellungDialog

	///

	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch

	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,

	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.

	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen

	///          arbeiten, die diesem Formular zugewiesen sind.

	/// </summary>

	public ref class einstellungenDialog4 : public System::Windows::Forms::Form

	{

	public:

		einstellungenDialog4(Int32 breite, Int32 hoehe, Color rahmen, Color malen)

		{

			InitializeComponent();

			//

			//TODO: Konstruktorcode hier hinzufügen.

			//


			linie = 6;

			pinsel1 = gcnew SolidBrush(Color::White);

			malflaeche = panelVorschau->CreateGraphics();

			panelVorschau->BackColor = Color::Black;

			panelBallvorschau->BackColor = Color::White;

			panelSchlaegervorschau->BackColor = Color::White;

			rahmenFarbe = rahmen;


			setzeVorschau();



			//if(breite == 320 && hoehe == 200)

			//{

   //             radioButton320->Checked = true;

			//}

			//else if(breite == 640 && hoehe == 480)

			//{

   //             radioButton640->Checked = true;

			//}

			//else if(breite == 1024 && hoehe == 768)

			//{

   //             radioButton1024->Checked = true;

			//}

			//else  

			//{

   //             radioButtonMaximal->Checked = true;

			//}


		}


	protected:

		/// <summary>

		/// Verwendete Ressourcen bereinigen.

		/// </summary>

		~einstellungenDialog4()

		{

			if (components)

			{

				delete components;

			}

		}



	public:


		// die Methode liefert die ausgewählten Werte zurück


		Point liefereWert()

		{

			Point rueckgabe;


			if (radioButton320 -> Checked == true)


				rueckgabe = Point(320,200);


			if (radioButton640 -> Checked == true)


				rueckgabe = Point(640,480);


			if (radioButton1024 -> Checked == true)


				rueckgabe = Point(1024,760);


			if (radioButtonMaximal -> Checked == true)


				// bitte in einer Zeile eingeben


				rueckgabe = Point(Screen::PrimaryScreen -> Bounds.Width, Screen::PrimaryScreen -> Bounds.Height);


			return rueckgabe;

		}


		Void setzeVorschau()

		{

			vorschauGroesse = panelVorschau->ClientRectangle;


			vorschauMaxX = vorschauGroesse.Right - linie;

			vorschauMinX = vorschauGroesse.Left + linie + 1;

			vorschauMaxY = vorschauGroesse.Bottom - linie;

			vorschauMinY = vorschauGroesse.Top + linie;

		}


		Void maleVorschau()

		{		

			malflaeche->FillRectangle(pinsel1, 0, 0, vorschauMaxX, linie);

			malflaeche->FillRectangle(pinsel1, vorschauMaxX, 0, linie, vorschauMaxY + linie);

			malflaeche->FillRectangle(pinsel1, 0, vorschauMaxY, vorschauMaxX, linie);

			malflaeche->FillRectangle(pinsel1, 0,0, linie, vorschauMaxX);

		}


		Color liefereBackColor()

		{

			return colorDialog1->Color;

		}


		Color liefereRahmenColor()

		{

			return rahmenFarbe;

		}


	private:


		Graphics ^malflaeche;


		SolidBrush ^pinsel1;


		Rectangle vorschauGroesse;


		Int32 linie, vorschauMaxX, vorschauMaxY, vorschauMinX, vorschauMinY;


		Color rahmenFarbe;


		Color malen;


	private: System::Windows::Forms::GroupBox^  groupBox1;

	private: System::Windows::Forms::Button^  buttonUebernehmen;

	private: System::Windows::Forms::Button^  buttonAbbrechen;

	private: System::Windows::Forms::RadioButton^  radioButtonMaximal;

	private: System::Windows::Forms::RadioButton^  radioButton1024;

	private: System::Windows::Forms::RadioButton^  radioButton640;

	private: System::Windows::Forms::RadioButton^  radioButton320;

	private: System::Windows::Forms::GroupBox^  farbeinstellung;

	private: System::Windows::Forms::Label^  labelHintergrund;

	private: System::Windows::Forms::Button^  buttonRahmen;


	private: System::Windows::Forms::Button^  buttonHintergrund;

	private: System::Windows::Forms::Label^  labelRahmenfarbe;

	private: System::Windows::Forms::ColorDialog^  colorDialog1;

	private: System::Windows::Forms::Panel^  panelVorschau;

	private: System::Windows::Forms::Panel^  panelSchlaegervorschau;

	private: System::Windows::Forms::Panel^  panelBallvorschau;


	protected: 


	private:

		/// <summary>

		/// Erforderliche Designervariable.

		/// </summary>

		System::ComponentModel::Container ^components;


#pragma region Windows Form Designer generated code

		/// <summary>

		/// Erforderliche Methode für die Designerunterstützung.

		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.

		/// </summary>

		void InitializeComponent(void)

		{

			this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());

			this->radioButtonMaximal = (gcnew System::Windows::Forms::RadioButton());

			this->radioButton1024 = (gcnew System::Windows::Forms::RadioButton());

			this->radioButton640 = (gcnew System::Windows::Forms::RadioButton());

			this->radioButton320 = (gcnew System::Windows::Forms::RadioButton());

			this->buttonUebernehmen = (gcnew System::Windows::Forms::Button());

			this->buttonAbbrechen = (gcnew System::Windows::Forms::Button());

			this->farbeinstellung = (gcnew System::Windows::Forms::GroupBox());

			this->buttonRahmen = (gcnew System::Windows::Forms::Button());

			this->buttonHintergrund = (gcnew System::Windows::Forms::Button());

			this->labelRahmenfarbe = (gcnew System::Windows::Forms::Label());

			this->labelHintergrund = (gcnew System::Windows::Forms::Label());

			this->colorDialog1 = (gcnew System::Windows::Forms::ColorDialog());

			this->panelVorschau = (gcnew System::Windows::Forms::Panel());

			this->panelSchlaegervorschau = (gcnew System::Windows::Forms::Panel());

			this->panelBallvorschau = (gcnew System::Windows::Forms::Panel());

			this->groupBox1->SuspendLayout();

			this->farbeinstellung->SuspendLayout();

			this->panelVorschau->SuspendLayout();

			this->SuspendLayout();

			// 

			// groupBox1

			// 

			this->groupBox1->Controls->Add(this->radioButtonMaximal);

			this->groupBox1->Controls->Add(this->radioButton1024);

			this->groupBox1->Controls->Add(this->radioButton640);

			this->groupBox1->Controls->Add(this->radioButton320);

			this->groupBox1->Location = System::Drawing::Point(12, 12);

			this->groupBox1->Name = L"groupBox1";

			this->groupBox1->Size = System::Drawing::Size(323, 80);

			this->groupBox1->TabIndex = 0;

			this->groupBox1->TabStop = false;

			this->groupBox1->Text = L"Größe";

			// 

			// radioButtonMaximal

			// 

			this->radioButtonMaximal->AutoSize = true;

			this->radioButtonMaximal->Location = System::Drawing::Point(253, 32);

			this->radioButtonMaximal->Name = L"radioButtonMaximal";

			this->radioButtonMaximal->Size = System::Drawing::Size(63, 17);

			this->radioButtonMaximal->TabIndex = 3;

			this->radioButtonMaximal->TabStop = true;

			this->radioButtonMaximal->Text = L"Maximal";

			this->radioButtonMaximal->UseVisualStyleBackColor = true;

			// 

			// radioButton1024

			// 

			this->radioButton1024->AutoSize = true;

			this->radioButton1024->Location = System::Drawing::Point(170, 32);

			this->radioButton1024->Name = L"radioButton1024";

			this->radioButton1024->Size = System::Drawing::Size(77, 17);

			this->radioButton1024->TabIndex = 2;

			this->radioButton1024->Text = L"1024 * 768";

			this->radioButton1024->UseVisualStyleBackColor = true;

			// 

			// radioButton640

			// 

			this->radioButton640->AutoSize = true;

			this->radioButton640->Checked = true;

			this->radioButton640->Location = System::Drawing::Point(93, 32);

			this->radioButton640->Name = L"radioButton640";

			this->radioButton640->Size = System::Drawing::Size(71, 17);

			this->radioButton640->TabIndex = 1;

			this->radioButton640->TabStop = true;

			this->radioButton640->Text = L"640 * 480";

			this->radioButton640->UseVisualStyleBackColor = true;

			// 

			// radioButton320

			// 

			this->radioButton320->AutoSize = true;

			this->radioButton320->Location = System::Drawing::Point(16, 32);

			this->radioButton320->Name = L"radioButton320";

			this->radioButton320->Size = System::Drawing::Size(71, 17);

			this->radioButton320->TabIndex = 0;

			this->radioButton320->Text = L"320 * 200";

			this->radioButton320->UseVisualStyleBackColor = true;

			// 

			// buttonUebernehmen

			// 

			this->buttonUebernehmen->DialogResult = System::Windows::Forms::DialogResult::OK;

			this->buttonUebernehmen->Location = System::Drawing::Point(12, 330);

			this->buttonUebernehmen->Name = L"buttonUebernehmen";

			this->buttonUebernehmen->Size = System::Drawing::Size(75, 23);

			this->buttonUebernehmen->TabIndex = 1;

			this->buttonUebernehmen->Text = L"Übernehmen";

			this->buttonUebernehmen->UseVisualStyleBackColor = true;

			// 

			// buttonAbbrechen

			// 

			this->buttonAbbrechen->Location = System::Drawing::Point(260, 330);

			this->buttonAbbrechen->Name = L"buttonAbbrechen";

			this->buttonAbbrechen->Size = System::Drawing::Size(75, 23);

			this->buttonAbbrechen->TabIndex = 2;

			this->buttonAbbrechen->Text = L"Abbrechen";

			this->buttonAbbrechen->UseVisualStyleBackColor = true;

			this->buttonAbbrechen->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonAbbrechen_Click);

			// 

			// farbeinstellung

			// 

			this->farbeinstellung->Controls->Add(this->buttonRahmen);

			this->farbeinstellung->Controls->Add(this->buttonHintergrund);

			this->farbeinstellung->Controls->Add(this->labelRahmenfarbe);

			this->farbeinstellung->Controls->Add(this->labelHintergrund);

			this->farbeinstellung->Location = System::Drawing::Point(12, 98);

			this->farbeinstellung->Name = L"farbeinstellung";

			this->farbeinstellung->Size = System::Drawing::Size(323, 94);

			this->farbeinstellung->TabIndex = 3;

			this->farbeinstellung->TabStop = false;

			this->farbeinstellung->Text = L"Farbeinstellung";

			// 

			// buttonRahmen

			// 

			this->buttonRahmen->Location = System::Drawing::Point(150, 57);

			this->buttonRahmen->Name = L"buttonRahmen";

			this->buttonRahmen->Size = System::Drawing::Size(25, 25);

			this->buttonRahmen->TabIndex = 3;

			this->buttonRahmen->Text = L". . .";

			this->buttonRahmen->UseVisualStyleBackColor = true;

			this->buttonRahmen->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonRahmen_Click);

			// 

			// buttonHintergrund

			// 

			this->buttonHintergrund->Location = System::Drawing::Point(150, 22);

			this->buttonHintergrund->Name = L"buttonHintergrund";

			this->buttonHintergrund->Size = System::Drawing::Size(25, 25);

			this->buttonHintergrund->TabIndex = 2;

			this->buttonHintergrund->Text = L". . .";

			this->buttonHintergrund->UseVisualStyleBackColor = true;

			this->buttonHintergrund->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonHintergrund_Click);

			// 

			// labelRahmenfarbe

			// 

			this->labelRahmenfarbe->AutoSize = true;

			this->labelRahmenfarbe->Location = System::Drawing::Point(13, 69);

			this->labelRahmenfarbe->Name = L"labelRahmenfarbe";

			this->labelRahmenfarbe->Size = System::Drawing::Size(71, 13);

			this->labelRahmenfarbe->TabIndex = 1;

			this->labelRahmenfarbe->Text = L"Rahmenfarbe";

			// 

			// labelHintergrund

			// 

			this->labelHintergrund->AutoSize = true;

			this->labelHintergrund->Location = System::Drawing::Point(13, 34);

			this->labelHintergrund->Name = L"labelHintergrund";

			this->labelHintergrund->Size = System::Drawing::Size(100, 13);

			this->labelHintergrund->TabIndex = 0;

			this->labelHintergrund->Text = L"Spielfeldhintergrund";

			// 

			// panelVorschau

			// 

			this->panelVorschau->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;

			this->panelVorschau->Controls->Add(this->panelSchlaegervorschau);

			this->panelVorschau->Controls->Add(this->panelBallvorschau);

			this->panelVorschau->Location = System::Drawing::Point(12, 198);

			this->panelVorschau->Name = L"panelVorschau";

			this->panelVorschau->Size = System::Drawing::Size(323, 124);

			this->panelVorschau->TabIndex = 4;

			this->panelVorschau->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &einstellungenDialog4::panelVorschau_Paint);

			// 

			// panelSchlaegervorschau

			// 

			this->panelSchlaegervorschau->Location = System::Drawing::Point(18, 35);

			this->panelSchlaegervorschau->Name = L"panelSchlaegervorschau";

			this->panelSchlaegervorschau->Size = System::Drawing::Size(6, 30);

			this->panelSchlaegervorschau->TabIndex = 1;

			// 

			// panelBallvorschau

			// 

			this->panelBallvorschau->Location = System::Drawing::Point(185, 58);

			this->panelBallvorschau->Name = L"panelBallvorschau";

			this->panelBallvorschau->Size = System::Drawing::Size(6, 6);

			this->panelBallvorschau->TabIndex = 0;

			// 

			// einstellungenDialog3

			// 

			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

			this->ClientSize = System::Drawing::Size(353, 365);

			this->Controls->Add(this->panelVorschau);

			this->Controls->Add(this->farbeinstellung);

			this->Controls->Add(this->buttonAbbrechen);

			this->Controls->Add(this->buttonUebernehmen);

			this->Controls->Add(this->groupBox1);

			this->Name = L"einstellungenDialog3";

			this->StartPosition = System::Windows::Forms::FormStartPosition::CenterParent;

			this->Text = L"Einstellungen";

			this->TopMost = true;

			this->groupBox1->ResumeLayout(false);

			this->groupBox1->PerformLayout();

			this->farbeinstellung->ResumeLayout(false);

			this->farbeinstellung->PerformLayout();

			this->panelVorschau->ResumeLayout(false);

			this->ResumeLayout(false);


		}

#pragma endregion

	private: System::Void buttonAbbrechen_Click(System::Object^  sender, System::EventArgs^  e) 

			 {

				 Close();

			 }



	private: System::Void panelVorschau_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) 

			 {

				maleVorschau();

			 }

	private: System::Void buttonHintergrund_Click(System::Object^  sender, System::EventArgs^  e) 

		 {

			 if(colorDialog1->ShowDialog() == Windows::Forms::DialogResult::OK)

			 {

				 panelVorschau->BackColor = colorDialog1->Color;

			 }

		 }

	private: System::Void buttonRahmen_Click(System::Object^  sender, System::EventArgs^  e) 

		 {

			 ColorDialog ^cd = gcnew ColorDialog();


			 if(cd->ShowDialog() == Windows::Forms::DialogResult::OK)

			 {

				 rahmenFarbe = cd->Color;


				 pinsel1->Color = rahmenFarbe;

				 panelBallvorschau->BackColor = rahmenFarbe;

				 panelSchlaegervorschau->BackColor = rahmenFarbe;

				 maleVorschau();

		 }

			 }

};

}


Mein Problem: Mit dem auskommentierten Teil funktioniert zwar die Auswahl der Größe und es wird der richtige Radiobutton als vorausgewählt markiert, weil ich den ja in den Eigenschaften festgelegt habe, aber wenn ich dieses Formular noch einmal öffne, ist nicht der Radiobutton markiert, den man ausgewählt hat sondern immer noch der festgelegte Radiobutton 640 * 480. Ist der Code aber aktiv, dann wird mir zu Anfang der Maximal Radiobutten markiert und die Auswahl funktioniert. Das heißt es wird die Größe übernommen und auch der richtige Radiobutton beim wieder Öffnen des Einstellungendialogs.

Wie kann ich das hinbekommen, das trotzdem der Radiobutton 640 * 480 am Anfang markiert ist und nicht Maximal trotz des aktiven Codes, den ich jetzt erstmal auskommentiert habe?

Ach so: Es handelt sich um C++/Cli (Forms obwohl !!!!!)

Lieben Dank für Eure Hilfe

lempy

Geschrieben

Hi lempy,

Ich hab's nur kurz überflogen: Du legst die Vorauswahl beim Erstellen des Forms fest - übergib doch die Vorauswahl als Parameter.

Und: Überleg Dir, ob Du das Objekt "Einstellungsdialog" nur nicht mehr anzeigst oder es zerstörst und jedes mal neu generierst.

Grüße

Sascha

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...