lempy Geschrieben 15. November 2014 Geschrieben 15. November 2014 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 Zitieren
RipperFox Geschrieben 17. November 2014 Geschrieben 17. November 2014 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 Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 17. November 2014 Geschrieben 17. November 2014 Wie kann ich das hinbekommen, das trotzdem der Radiobutton 640 * 480 am Anfang markiert ist und nicht MaximalIst die Größe denn am Anfang 640 * 480? Oder soll am Anfang 640 * 480 selektiert sein, egal wie die Größe ist? Zitieren
Empfohlene Beiträge
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.