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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...