Zum Inhalt springen

lempy

Mitglieder
  • Gesamte Inhalte

    90
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von lempy

  1. Hallo Klotzkopp:D:D Funktioniert wie es soll. Lieben, lieben Dank noch mal. Brauchte eben noch ne Zeit, bis ich das ganze richtig Verarbeitet habe. Auch der Hintergrund! Hatte vergessen auf der "Form1" Hintergrundfarbe = neuefarbe->lieferehintergrund() zu schreiben. Ich würde sagen mal wieder viel zu kompliziert gedacht oder? Lieben Gruß lempy
  2. Hey Kloztkopp In die Richtung sind meine Gedanken überhaupt nicht gewandert. Ich war voll auf Funktionen und Methoden fixiert. Nachdem ich die Farbe des Pinsels geändert habe, bleibt der Rahmen in der geänderten Farbe erhalten. Nur der Hintergrund meines Panals macht noch nicht mit. Mein jetziger Gedanke geht in die Richtung die Farbe im Hintergrund des Panals mit Clear zu löschen und dann in der Set-Methode neu zu setzen. Werde mir für Heute mal die Lektionen über Panal ansehen (Heft und zusätzliche Bücher unteranderem auch eines für C#) und das erstmal ausprobieren. Nebenbei werde ich das Ding mir der Rahmenfarbe erstmal sacken lassen und dann zumindest für diese Variablen zwei verschiedene ausdenken um den Lauf des Programm nachvollziehen zu können. Vielleicht gibt es noch einen Tipp für den Hintergrund, aber erstmal möchte ich versuchen das an Hand meiner neuen Erkenntnisse selbe zu lösen. Recht lieben, lieben Dank lempy
  3. Hey Klotzkopp Ich glaube so langsam entwirrt sich mein Wollknäuel im Gedankengang. Muss nur noch den roten Faden finden. Ich hoffe das zumindest mein jetziger Gedanke die richtige Richtung hat. Gedanke: Eine Funktion/Methode auf der Form2, die die neue Farbeinstellung speichert und in Form1 vor dem Klicken auf dem Übernehmen aufgerufen wird? Oder doch eher die ganze Methode Vorschau in einer Variable speichert und dann wieder im Konstruktor oder in Paint der Form2 aufgerufen wird? :confused: Werde jetzt erstmal meinen Termin wahrnehmen. Vielleicht hast Du bis dahin ja noch ein oder zwei Hinweise, die mir den Aha-Effekt bringen. Lieben Dank lempy
  4. Hallo Klotzkopp Das Programm soll ein kleines Pong-Spiel werden und das sind jetzt nur Codeschnipsel, weil im Vollständigem Programm zu viele Versuche Auskommentiert sind. Es ist mir durchaus schon klar das die Variablen nur in ihrem Bereich Gültigkeit haben also nur in Form1 bzw Form2 oder in ihren Funktionen/Methoden. Je nach dem. Bilder sagen vielleicht mehr als Worte, da ich nicht so firm bin diese immer zu finden. Wie Du siehst habe ich die neue Farbauswahl getroffen, die auch auf das Form1 übernommen wird. (Der erste Screenshor ein paar Antworten früher). Ich denke es ist auch genau in diesem Teil des Programm, wo ich eine Funktion/Methode "suche" die diese Farbänderung auf der Form2 festhält, beibehält, speichert wie auch immer. Auf jeden Fall soll diese neue Farbeinstellung in meiner Vorschau zu sehen sein, wenn ich wieder eine neue Einstellung vornehmen möchte. Von der Form2 aus kann oder darf ich nicht auf die Form1 zugreifen. Oder doch? Ich denke eher nicht da Form1 ja die Hauptform ist. Also bliebe da nur eine Methode auf der Form1, weil diese ja auf Form2 zugreifen kann. Da schwirrt mir eben so eine Idee im Kopf rum: Könnte es eventuell mit einem Vergleich der beiden (oder vielmehr 4) Variablen funktionieren? Hab im Moment nur noch keinen Schimmer wie der Code aussehen könnte und wo ich den schreiben muss. Lieben Dank lempy
  5. Hallo Wenn ich das richtig verstanden habe, dann ist die "Methode" liefereHintergrund (Getter) der Pad, der mit return die Farbe zurück gibt und die "setzeRahmen"-Methode (Setter) der, in dem ich der "Variable" die Farbe zu weise? In einer schon etwas fortgeschrittener Version dieses Spiels hatte ich das Problem mit Radiobuttons, mit denen ich die Spielfeldgröße ändern kann. (neuem Betriebssystem wegen neuem Rechner(Windows8) funktioniert der Programmteil das nicht mehr so wie auf Windows7) Hier sollte die neue Auswahl der Größe beim Wiederaufruf des Dialogfeldes ebenfalls nicht verloren gehen und ausgewählt bleiben. Wie gesagt auf Windows7 lief es so. Vielleicht habe ich den Fehler begangen es nur auf den neuen Rechner zu kopieren. Habe ich noch nicht weiter ausprobiert, weil ich zur Not den alten Rechner wieder her holen kann. Andererseits stelle ich mir die Frage, ob ich eventuell noch eine dritte Form für dieses Problem erstelle? Habe mal ein Probeprogramm in C++/CLR Konsole erstellt mit zwei "Klassen". Aber da wird das ganze Programm ja von main aus gesteuert oder eher ausgeführt. So weit ich bisher mitbekommen habe soll dass in Forms ja über Formen und Methoden laufen. Hier mal das kleine Testprogramm in C++/CLR Konsole: // TomTest1.cpp: Hauptprojektdatei. #include "stdafx.h" using namespace System; ref class Aendern { Int32 MeinWert; public: Void setzeWert() { /*Console::WriteLine();*/ Console::WriteLine("{0}",MeinWert); /*return MeinWert;*/ } Int32 leseWert() { return MeinWert; } Void FrageBenutzer() { /*MeinWert = 0;*/ Console::Write("Bitte in Funktion \"FrageBenutzer\" der Klasse \"Ändern\" eine Zahl eingeben.\n"); Console::WriteLine(); /*MeinWert = Convert::ToInt32(Console::Read());*/ MeinWert = Int32::Parse(Console::ReadLine()); Console::WriteLine(); /*leseWert(); Console::WriteLine();*/ } }; ref class Klasse1 { public: Int32 MeinWert; public: Void aufruf() { Console::WriteLine(); Console::WriteLine("Aus Klass \"Klasse1\"\n"); /*Console::WriteLine();*/ Aendern ^test1 = gcnew Aendern(); Console::WriteLine("Neuen wert eingeben\n"); MeinWert = test1->leseWert(); /*Console::WriteLine(); Console::WriteLine("Ausgabe dew neuen Wertes\n");*/ test1->FrageBenutzer(); Console::WriteLine("Ausgabe des neuen Weres\n"); test1->setzeWert(); Console::WriteLine(); } /*Void ausgeben() { Aendern ^test1 = gcnew Aendern(); test1->leseWert(); Console::WriteLine(); }*/ }; int main(array<System::String ^> ^args) { /*Aendern ^test1 = gcnew Aendern(); test1->FrageBenutzer();*/ Console::WriteLine("In Funktion \"main\""); Console::WriteLine(); Klasse1 ^test2 = gcnew Klasse1(); test2->MeinWert = 12; /*Console::WriteLine();*/ Console::WriteLine(test2->MeinWert); test2->aufruf(); /*Console::WriteLine(test2->MeinWert);*/ /*Console::ReadKey();*/ /*Console::WriteLine();*/ /*Aendern ^test3 = gcnew Aendern(); test3->leseWert();*/ Console::Read(); return 0; } Vielleicht ist es Dir möglich mich an Hand dieses Testes in die richtige Richtung zu schupsen. Lieben Dank lempy
  6. Hey Wenn ich mich mit etwas beschäftige, dann soll es ordentlich werden. Schließlich möchte ich dass, was ich tue auch verstehen. Sonst macht das ganze keinen Sinn. Deswegen war mir Umschulung ja dann auch wichtiger als der Fernkurs, der dann zurückstecken musste. Also ich werde Dir mal meine Codefragmente rüberreichen: Aus der Form1 der Aufruf des MenüStrip, der dann die Form2 aufruft. private: System::Void farbeToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { Farbdialog ^neueFarbe = gcnew Farbdialog(this->HintergrundFarbe,this->RahmenFarbe); //Color Hintergrundzurück() //{ // return HintergrundFarbe; //} //Color Rahmenzurück() //{ // return RahmenFarbe; //} /*neueFarbe->liefereHintergrund(HintergrundFarbe);*/ /*neueFarbe->Show();*/ if(neueFarbe->ShowDialog() == Windows::Forms::DialogResult::OK) { spielfeld->BackColor = neueFarbe->setzeHintergrund(); RahmenFarbe = neueFarbe->setzeRahmen(); /*neueFarbe->Show();*/ neueFarbe->Close(); } } Hier die gesamte Form2 #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 PongTest { /// <summary> /// Zusammenfassung für Farbdialog /// /// 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 Farbdialog : public System::Windows::Forms::Form { private: // eigene Attributte // für die Zeichenflaeche Graphics ^malflaeche; // für das Vorschau Rectangle VorschauGroesse; Int32 VorschauMaxX, VorschauMaxY, VorschauMinX, VorschauMinY; Int32 LinienBreite; // zum Zeichnen SolidBrush ^pinsel1; Color HintergrundFarbe, RahmenFarbe; public: Farbdialog(Color HintergrundFarbe, Color RahmenFarbe) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // LinienBreite = 6; pinsel1 = gcnew SolidBrush(Color::White); malflaeche = panelVorschau->CreateGraphics(); panelVorschau->BackColor = Color::Black; setzeVorschau(); maleVorschau(); /*liefereHintergrund();*/ /*setzeHintergrund();*/ } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Farbdialog() { if (components) { delete components; } } public: Void setzeVorschau() { VorschauGroesse = panelVorschau->ClientRectangle; VorschauMaxX = VorschauGroesse.Right - LinienBreite; VorschauMinX = VorschauGroesse.Left + LinienBreite + 1; VorschauMaxY = VorschauGroesse.Bottom - LinienBreite; VorschauMinY = VorschauGroesse.Top + LinienBreite; } Void maleVorschau() { malflaeche->FillRectangle(pinsel1, 0, 0, VorschauMaxX, LinienBreite); malflaeche->FillRectangle(pinsel1, VorschauMaxX, 0, LinienBreite, VorschauMaxY + LinienBreite); malflaeche->FillRectangle(pinsel1, 0, VorschauMaxY, VorschauMaxX, LinienBreite); malflaeche->FillRectangle(pinsel1, 0,0, LinienBreite, VorschauMaxX); } Color setzeHintergrund() { return HintergrundFarbe; } Color setzeRahmen() { return RahmenFarbe; } Void liefereHintergrund(Color hFarbe) { hFarbe = HintergrundFarbe; panelVorschau->Refresh(); } private: System::Windows::Forms::Label^ labelRahmen; protected: private: System::Windows::Forms::Button^ buttonRahmen; private: System::Windows::Forms::Label^ labelHintergrund; private: System::Windows::Forms::Button^ buttonHintergrund; private: System::Windows::Forms::Panel^ panelVorschau; private: System::Windows::Forms::Button^ buttonUebernehmen; private: System::Windows::Forms::Button^ buttonAbbrechen; private: System::Windows::Forms::ColorDialog^ Farbauswahl; 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->labelRahmen = (gcnew System::Windows::Forms::Label()); this->buttonRahmen = (gcnew System::Windows::Forms::Button()); this->labelHintergrund = (gcnew System::Windows::Forms::Label()); this->buttonHintergrund = (gcnew System::Windows::Forms::Button()); this->panelVorschau = (gcnew System::Windows::Forms::Panel()); this->buttonUebernehmen = (gcnew System::Windows::Forms::Button()); this->buttonAbbrechen = (gcnew System::Windows::Forms::Button()); this->Farbauswahl = (gcnew System::Windows::Forms::ColorDialog()); this->SuspendLayout(); // // labelRahmen // this->labelRahmen->AutoSize = true; this->labelRahmen->Location = System::Drawing::Point(30, 20); this->labelRahmen->Name = L"labelRahmen"; this->labelRahmen->Size = System::Drawing::Size(47, 13); this->labelRahmen->TabIndex = 0; this->labelRahmen->Text = L"Rahmen"; // // buttonRahmen // this->buttonRahmen->Location = System::Drawing::Point(106, 20); this->buttonRahmen->Name = L"buttonRahmen"; this->buttonRahmen->Size = System::Drawing::Size(30, 30); this->buttonRahmen->TabIndex = 1; this->buttonRahmen->Text = L". . ."; this->buttonRahmen->UseVisualStyleBackColor = true; this->buttonRahmen->Click += gcnew System::EventHandler(this, &Farbdialog::buttonRahmen_Click); // // labelHintergrund // this->labelHintergrund->AutoSize = true; this->labelHintergrund->Location = System::Drawing::Point(30, 77); this->labelHintergrund->Name = L"labelHintergrund"; this->labelHintergrund->Size = System::Drawing::Size(62, 13); this->labelHintergrund->TabIndex = 2; this->labelHintergrund->Text = L"Hintergrund"; // // buttonHintergrund // this->buttonHintergrund->Location = System::Drawing::Point(106, 77); this->buttonHintergrund->Name = L"buttonHintergrund"; this->buttonHintergrund->Size = System::Drawing::Size(30, 30); this->buttonHintergrund->TabIndex = 3; this->buttonHintergrund->Text = L". . ."; this->buttonHintergrund->UseVisualStyleBackColor = true; this->buttonHintergrund->Click += gcnew System::EventHandler(this, &Farbdialog::buttonHintergrund_Click); // // panelVorschau // this->panelVorschau->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle; this->panelVorschau->Location = System::Drawing::Point(12, 125); this->panelVorschau->Name = L"panelVorschau"; this->panelVorschau->Size = System::Drawing::Size(357, 140); this->panelVorschau->TabIndex = 4; this->panelVorschau->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &Farbdialog::panelVorschau_Paint); // // buttonUebernehmen // this->buttonUebernehmen->DialogResult = System::Windows::Forms::DialogResult::OK; this->buttonUebernehmen->Location = System::Drawing::Point(39, 302); this->buttonUebernehmen->Name = L"buttonUebernehmen"; this->buttonUebernehmen->Size = System::Drawing::Size(75, 23); this->buttonUebernehmen->TabIndex = 5; this->buttonUebernehmen->Text = L"Übernehmen"; this->buttonUebernehmen->UseVisualStyleBackColor = true; // // buttonAbbrechen // this->buttonAbbrechen->Location = System::Drawing::Point(253, 304); this->buttonAbbrechen->Name = L"buttonAbbrechen"; this->buttonAbbrechen->Size = System::Drawing::Size(75, 23); this->buttonAbbrechen->TabIndex = 6; this->buttonAbbrechen->Text = L"Abbrechen"; this->buttonAbbrechen->UseVisualStyleBackColor = true; this->buttonAbbrechen->Click += gcnew System::EventHandler(this, &Farbdialog::buttonAbbrechen_Click); // // Farbdialog // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(394, 334); this->ControlBox = false; this->Controls->Add(this->buttonAbbrechen); this->Controls->Add(this->buttonUebernehmen); this->Controls->Add(this->panelVorschau); this->Controls->Add(this->buttonHintergrund); this->Controls->Add(this->labelHintergrund); this->Controls->Add(this->buttonRahmen); this->Controls->Add(this->labelRahmen); this->Name = L"Farbdialog"; this->RightToLeft = System::Windows::Forms::RightToLeft::Yes; this->ShowIcon = false; this->StartPosition = System::Windows::Forms::FormStartPosition::CenterParent; this->Text = L"Farbdialog"; this->ResumeLayout(false); this->PerformLayout(); } #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) { ColorDialog ^cd = gcnew ColorDialog(); if(cd->ShowDialog() == Windows::Forms::DialogResult::OK) { HintergrundFarbe = cd->Color; buttonHintergrund->BackColor = cd->Color; panelVorschau->BackColor = HintergrundFarbe; } } private: System::Void buttonRahmen_Click(System::Object^ sender, System::EventArgs^ e) { ColorDialog ^cc = gcnew ColorDialog(); if(cc->ShowDialog() == Windows::Forms::DialogResult::OK) { RahmenFarbe = cc->Color; buttonRahmen->BackColor = cc->Color; pinsel1->Color = RahmenFarbe; maleVorschau(); } } }; } Lieben Dank lempy
  7. Lieber Klotzkopp Meine Situation ist, das ich einen Fernkurs gemacht habe (noch nicht Fertig, aber Laufzeit überschritten und somit ruhend in der Fernschule). Grund Fernkurs begonnen und dann eine Umschulung von Arge zugewiesen bekommen an einen eher "Unkompetenten" Bildungsträger. Bei meinem Start waren die Kollegen schon drei Monate dabei und was noch schlimmer war einige Lernfelder musste man im Selbststudium lernen. Jetzt möchte ich die restlichen drei Hefte noch durcharbeiten und dann nochmal dort anknüpfen wo ich aufgehört habe um die Umschulung zu mit gutem Abschluss zu schaffen. Weil das noch mal Talers kostet möchte erst die restlichen Hefte durcharbeiten damit der Wiedereinstieg nicht ganz so teuer wird. Vielleicht hilft es Dir wenn ich die Codefragment aus Form1 und die Form2 hier einfüge? Lieben Gruß lempy
  8. Hey Klotzkopp Im Hintergrund ist das Spielfeld auf der Form1 schon im neuen Farbdress. Beim Wiederaufruf des Dialogfeldes ist aber die neu Farbeinstellung nicht in der Vorschau übernommen worden, sondern wieder in die Ausgansfarben vor zu finden. Allgemein sollte sich Form2 die Farbdaten aus derselben Quelle holen wie Form1, dann kann das gar nicht auseinanderlaufen.
  9. Hallo Leute ich bin dabei ein Spielfeld zu erstellen, dem man ein neues farbliches Outfit geben kann. Das passiert in zwei Formen. Form1 = Hauptform. Form2 = Dialogform. Wie ihr seht funktioniert die Übergabe der neuen Farbe auf die Hauptform einwandfrei. Jetzt stehe ich vor dem Problem, dass die Vorschau auf der Form2 die neue Farbeinstellung beibehalten soll. Also die selben Farben aufweisen soll, wie das Spielfeld auf der Form1. Kann mir irgendwer dazu helfen? Das ganze ist in C++/CLR - Forms. Wenn Ihr den Code sehen möchtet meldet Euch. Lieben Dank lempy
  10. Hallo Leute Ich habe ein großes Problem, dass ich einfach nicht lösen kann. Ich schreibe ein kleines nicht ganz einfach gehaltenes Pong in Windows Forms mit C++/ClI. (Windows Forms und C++ ... habe ich gelesen, ja aber ich habe nun einmal damit angefangen und möchte das durcharbeiten auch wenn es dann eben etwas länger dauert) Jetzt zu meinem Problem. Ich habe auf der Form1 ( Hauptform ) das Spiel mit einem Panel als Spielfeld, welches ich als Zeichenfläche "deklariert" habe. Soweit funktioniert alles, wie es beim ersten Versuch eben funktionieren kann. Nun möchte ich, dass ich die Farbe des Spielfeldes, das heißt Rahmen, Zeit und Punkte während des Spielens oder vor Spielbeginn auf einer zweiten Form (einstllungsDialog) mittels eines colorDialoges ändern kann. Für die Änderung des Hintergrundes funktioniert es, doch Rahmen, Zeit und Punkte sowie Ball und Schläger machen mir Probleme. Die Form2 wird über ein TooStrimenuItem aufgerufen. Es erscheint mein Einstellungsdialog. Auf diesem habe ich zwei Button, die einmal die Hintergrundfarbe ändern sollen und einmal die Rahmenfarbe, die Ballfarbe, Schläger, Zeit und Punkte. Der colorDialog geht auf und ich kann die Farbe wählen. Zusätzlich habe ich eine Vorschau auf der Zweiten Form, die mir die geänderte Farbe anzeigt. Bis dahin ist alles OK. Das heißt: Ich rufe den colorDialog auf, wähle die Farbe und bestätige mit DialogRessult::OK. Die Vorschau zeigt die gewählte Farbe an, aber wie bekomme ich diese Auswahl jetzt zur Form1 rüber und wie kann ich diese Einstellung in der Form1 von der Form2 abholen? Leider stehen in den Büchern, die ich mir zugelegt habe nur die einfachen Teile drin, in der es nur eine Form gibt, aber keine "drei" Formen. Wenn man davon ausgeht, dass auch colorDialog eine Form ist. Im Grunde müsste die Übergabe doch geschehen, bevor colorDialog geschlossen wird, oder nicht? Habe schon in anderen Foren gefragt und dachte der Hinweis könnte es sein, aber leider hat mich noch keiner der Hinweise weitergeholfen. Die Hilfe auf der MSDN Seiten sind schaurig, weil sehr schlecht übersetzt. Ach ja auf beide Formen wird mit einem "pinsel" gezeichnet und der Ball und der Schläger sind ebenfalls Panels. :confused: Habe schon so viel probiert und ausgetestet und bin bisher nur soweit gekommen dass das Programm zwar ohne mucken compiliert und der Rahmen nicht mehr verschwindet, aber das war es dann auch. Bitte sagt mir ob ich den ganzen Code sehen wollt oder nur die entsprechenden Fragmente. Lieben Dank für Eure Hilfe lempy
  11. Hey Sieht zwar ziemlich kompliziert aus, aber mag wohl eher daran liegen, dass mir die "Fachbegriffe" noch nicht so geläufig sind. Bin im Grunde ja noch Anfänger. Übrigens scheint C# doch etwas anders zu "Ticken" wie c++ (Forms). Also versuchen das Ganze in C++ zu schreiben und später auf C# umsteigen. Verwirrt sonst nur. Wer noch andere Vorschläger hat, immer her damit. Damit ich noch konfuser werde. Lieben Dank lempy PS: Habe eben in einem C++-Buch etwas über "Delegaten" gefunden. Also doch schon ein super Hinweis, denn jetzt weiß ich erstmal in welche Richtung ich im ganz .Net gehen muss.
  12. Hallo lbm1305 das ganze schreibe ich in c++, darum erlaube mir die Frage ob der "CustomEbent" in den Eigenschaften oder Ereignissen in C# aufgeführt ist oder ob ich das selber machen muss? Mit dem Begriff CustomEvent kann ich absolut nichts anfangen. In C++ ´Forms finde ich diesen Begriff nicht und C# müsste ich mal ausprobieren, ob ich das Programm darin so zum laufen bekommen wie in C++. Versuchsweise halt. Werde mich mal daran setzen und ausprobieren. Mehr Anregungen sind immer noch willkommen. Lieben Dank lempy
  13. Hallo Leute, ich habe folgendes Problem: Zwei Forms. Form1 = Hauptform, Form2 = einstellungenDialog. Aus der Form1 wird über einem ToolStrip die Form2 aufgerufen um Einstellungen für mein Spielfeld zu machen, die dann in der Form1 übernommen werden sollen. System::Void spielfeldToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) ist die "Schnittstelle" zur Form2. Hier der volle Code der Schnittstelle in der Form1. private: System::Void spielfeldToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { Point neueGroesse; //Boolean auswahl; einstellungenDialog ^neueWerte = gcnew einstellungenDialog(); //groupBox1->SelectedIndexChanged = gcnew groupBox1(); /*einstellungenDialog ^buttonAuswahl = gcnew einstellungenDialog();*/ /*if (buttonAuswahl->ShowDialog() == Windows::Forms::DialogResult::OK)*/ //auswahl = Focus(); //wenn der Dialog über die "OK"-Schaltlfäche beendet wird if (neueWerte->ShowDialog() == Windows::Forms::DialogResult::OK) { //die neue Größe holen neueGroesse = neueWerte->liefereWert(); //den Dialog wieder schließen neueWerte->Close(); //das Formular ändern this->Width = neueGroesse.X; this->Height = neueGroesse.Y; //neu ausrichten 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); //und einen neuen Ball und einen neuen Schläger zeichnen neuerBall(); } Dabei wird in der Form2 die Methode Point liefereWert() übergeben, dass heißt die Rückgabevariable rückgabe übergiebt die Werte an die Form1. Der vollständige Code aus Form2 mit ein paar Vorversuchen von mir. //die Methode liefert die ausgewählten Werte Point liefereWert() { Point rueckgabe; if (radioButton320->Checked == true) { rueckgabe = Point(320,200); //radioButton320 -> Checked = true; } if (radioButton640->Checked == true) //{ rueckgabe = Point(640,480); //radioButton640 -> Checked = true; //} if (radioButton1024->Checked == true) { rueckgabe = Point(1024,768); //radioButton1024 ->Checked; } if (radioButtonMaximal->Checked == true) { rueckgabe = Point(Screen::PrimaryScreen->Bounds.Width, Screen::PrimaryScreen->Bounds.Height); //radioButtonMaximal -> Checked; } return rueckgabe; } Diese Übergabe funktioniert Problemlos. Meine Frage zu CheckedChanged und Konsorten: Wie kann ich die Ereignisse ChecekedChanged oder Checked der Form2 auf der Form1 abfragen? Geht das überhaupt oder muss ich eine eigene Abfragenmethode entwickeln? Wenn ja muss es dann ein Boll-Wert sein der das Ergebnis zurück gibt? Habe schon soviel gelesen, aber nicht das Richtige gefunden. Selbst in C# Büchern habe ich es nur mit Checked oder ChackedChanged auf nur einer Form gelesen. Ach ja die Radiobutten sind in einer GroupBox. Der radioButton640 ist schon vor Ausgewählt. Genau da liegt dann auch das Problem. Während mein Spielfeld zwar in der ausgewählten Größe startet und ich meine Einstellungen noch mal Ändern möchte, dann ist immer der radioButton640 ausgewählt, obwohl ich z. B. den radioButton320 gewählt hatte. Genau das soll nicht sein. Es soll nicht nur die Größe des Spielfeldes geändert werden, sonder auch der dazugehörige RadioButton ausgewählt sein. (Markiert sein). Wie kann ich das Checked oder CheckedChanged Ereignis aus der Form2 an die Form1 übergeben? Lieben Dank für Eure Hilfen und Anregungen lempy
  14. lempy

    Timer

    Hallo Ich bin dabei eine kleine Spielerei zu machen und möchte diese mittels eines Timers ausführen lassen. Es geht darum, dass ich verschiedene Geometrische Figuren in einen Panel zeichne. Diese Figuren sollen sich dann von der Mitte nach Außen und wieder zurück bewegen und nach zwei maliger Wiederholung wieder im Ausgangszustand verbleiben. Mit dieser Anweisung funktioniert es: if (radioButton2Fach -> Checked == true) { while(ausfuehren < 2) { for(Int32 i = 0; i < 20; i++) { groesse = groesse - 5; zeichenflaeche -> DrawRectangle(stift, panel1 -> ClientRectangle.Left + groesse, panel1 -> ClientRectangle.Top + groesse, panel1 -> ClientRectangle.Width - (groesse * 2), panel1 -> ClientRectangle.Height - (groesse * 2)); // einen Moment warten Threading::Thread::Sleep(100); // den Zeichenbereich löschen zeichenflaeche -> Clear(panel1 -> BackColor); } zeichenflaeche -> DrawRectangle(stift, bereich); for(Int32 i = 20; i > 0; i--) { groesse = groesse + 5; zeichenflaeche -> DrawRectangle(stift, panel1 -> ClientRectangle.Left + groesse, panel1 -> ClientRectangle.Top + groesse, panel1 -> ClientRectangle.Width - (groesse * 2), panel1 -> ClientRectangle.Height - (groesse * 2)); // einen Moment warten Threading::Thread::Sleep(100); // den Zeichenbereich löschen zeichenflaeche -> Clear(panel1 -> BackColor); } zeichenflaeche -> DrawRectangle(stift, panel1 -> ClientRectangle.Left + groesse, panel1 -> ClientRectangle.Top + groesse, panel1 -> ClientRectangle.Width - (groesse * 2), panel1 -> ClientRectangle.Height - (groesse * 2)); ++ausfuehren; } } Doch meine Versuche dies mittels eines Timers zu realisierten geht schief. Irgendwie fehlt mir jetzt der Plan wie ich den Timer einrichten muss. Ich habe versucht diese (Sleep und clear -Anweisung) in der Methode Timer_Click zuschreiben und diese dann mit Timer -> Enabled = treu in der Hauptfunktion auf zu rufen, aber es misslang. Die Sleep-Anweisung habe ich gelöscht und direkt den Interwal des Timers auf 3000 gesetzt, aber das Programm läuft immer in der selben Schnelligkeit ab. Übrigens entsteht dieses Programm in C++/CLI Windows Forms. (Der berühmte Hinweis auf C# ist mir schon geläufig, aber den Teil so gut wie durch. Werde es also auch zu Ende bringen) Was mache ich falsch und woran denke ich nicht? Bin für jeden Hinweis dankbar. Lieben Gruß lempy
  15. Oh Gott!! Was hab ich denn da für einen Schrott geschrieben. Fehlt das kleine Wörtchen "das" und "auch" Kommt davon, wenn die Gedanken oft schneller sind als die Finger. Gruß Lempy
  16. Hey a3quit4s Bist Du eventuell auch bei der Aufgabe? Aber hast schon recht. Werde mich am Wochenende damit befassen, wenn das so wichtig ist, denn ich selber bin Anfänger. Die komplette Lösung sollte ich eventuell nicht unbedingt so veröffentlichen, weil sie eine Einsendeaufgabe ist und noch einige meiner Mitstreiter eventuell eine schlechtere Note erhalten, wenn sie den einfach so "abschreiben". Weis nicht ob auffällt, aber wäre nicht fair meinen Kollegen gegenüber, vor allem, wenn sie auf die Idee gekommen sind. Also am Wochenende darüber grübeln, wie ich das leicht verständlich verpacke. Gruß lempy
  17. Hallo Wie auf einen anderen PC? Eigentlich nicht. Aber hat sich trotzdem erledigt, habe das Problem gelöst. Gruß lempy
  18. Hallo Kali werde ich machen sobald ich weiß wie es mit meinem alten Hund weiter geht oder ob es überhaupt noch mit ihm weiter geht. Melde mich dann wieder. Gruß lempy
  19. Hallo Leute Habe im Moment folgenden Code produziert und brauche nun ein wenig Hilfe. private: System::Void toolStripMenuItemVollbild_Click(System::Object^ sender, System::EventArgs^ e) { if (toolStripMenuItemVollbild -> Checked == true) { toolStripNavigation -> Visible = false; toolStripMenuItemNavigation1 -> Checked = false; toolStrip1 -> Visible = false; toolStripMenuItemNavigationsliste -> Checked = false; toolStripAdresse -> Visible = false; toolStripMenuItemAdresse -> Checked = false; //toolStripMenuItemNavigationsliste -> Checked = false; //splitContainer1 -> Panel1Collapsed = false; } if (toolStripMenuItemVollbild -> Checked == false) { toolStripNavigation -> Visible = true; toolStripMenuItemNavigation1 -> Checked = true; } if (toolStripMenuItemVollbild -> Checked == false) { toolStripMenuItemNavigationsliste -> Checked = true; toolStrip1 -> Visible = true; } if (toolStripMenuItemVollbild -> Checked == false) { toolStripAdresse -> Visible = true; toolStripMenuItemAdresse -> Checked = true; } else toolStripMenuItemVollbild -> Checked = false; } Dieser Code funktioniert zwar, aber noch nicht ganz so wie ich es mir wünsche. Wenn ich in dem Menü auf Vollbild klicke, dann verschwinden zwar die Häkchen und die toolStrips, aber die listBox bleibt erhalten und es erscheint die Webseite nicht im Vollbild. Dies passiert erst, wenn ich den Haken bei der Navigationsliste setze und wieder entferne und der toolStrip mit dem Namen Navigationsliste erscheint nicht, wenn das Häkchen gesetzt ist. Ebenso erscheint das Häkchen nicht bei Vollbild, wenn ich es anklicke. Danke für Eure Hilfe lempy
  20. Hallo Leute Ich möchte in einem Programm erreichen, dass meine drei toolstrips ausgeblendet werden wenn ich bei Vollbild das Häkchen setze. Also ich habe vier toolStris 1. toolStripAdresse 2. toolStripNavigation 3. toolStrip1 4. toolStripVollbild Bei allen vieren ist die Eigenschaft CheckedState auf true gesetzt und alle werden in der Menüzeile mit einem Häkchen angezeigt. Jetzt möchte ich aber, dass die ersten drei Häkchen und auch die toolStips ausgeblendet werden sobald das Häkchen bei Vollbild gesetzt wird. Umgekehrt soll das Häkchen bei Vollbild verschwinden sobald das Häkchen bei einem der drei ersten toolStrips gesetzt wird und es soll auch kein Vollbild mehr angezeigt werden. Ich habe es unter dem Clickereignis versucht und unter VisibleChanged und andere aber irgendwie funktioniert das mit diesem Code nicht private: System::Void toolStripMenuItemVollbild_Click(System::Object^ sender, System::EventArgs^ e) { if (toolStripMenuItemVollbild -> Checked) toolStripMenuItemAdresse -> Visible = false; } Kann man diesen oder ähnlichen Code nehmen und dann irgendwie unchecked darin einbinden? System::unchecked oder so? Bin für jeden Hinweis dankbar. Übrigens c++ und windows forms. Gruß und lieben Dank lempy
  21. Hallo Leute Mein Bildbetrachter ist soweit funktionsfähig fertig. Ein kleines Problem habe ich allerdings noch. Die Dateien, die ich in der Bilderschauf aufrufe sollen mit der jeweiligen Zahl ausgegeben werden. Z. B. Bild 2 von 4 und so weiter. Das funktioniert mit allen Bildern AUßER mit dem ersten Bild. Hier wird 0 von 4 angezeigt. Das möchte ich geändert haben. Bei meinen Versuchen habe ich es zwar hinbekommen, dass mir die 1 angezeigt wurde, aber dazu das falsche (2. Bild) angezeigt bekommen habe. Hier noch mal mein kompletter Code: form1.h
  22. Hey Frage hat sich doch noch erledigt. War eine ganz simple Änderung in der buttonAnzeigen_Clich Methode.l Gruß lempy
  23. Hallo Leute Bin nun endlich bei Windows Forms C++/CLI angelangt und habe bei der Erstellung meines Bildbetrachters ein Problem. Ich weiß, dafür hätte ich besser auf C# zugegriffen, aber ist leder nicht Innhalt meiner Schulung. Vielleicht später mal. Hier vorab erst mal die benötigten Listings: (In der FormMax sind ein paar Smilies, die da nicht hingehören. Habe sie leider nicht weg bekommen. Sorry) Die form.h #pragma once #include "formMax.h" namespace Bildbetrachter { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Zusammenfassung für Form1 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { private: formMax ^fensterBilderschau; public: Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::TabControl^ tabControl1; protected: private: System::Windows::Forms::TabPage^ tabPageEinzel; private: System::Windows::Forms::TabPage^ tabPageSchau; private: System::Windows::Forms::Button^ buttonBeenden; private: System::Windows::Forms::Button^ buttonOeffnen; private: System::Windows::Forms::Button^ buttonAnzeigen; private: System::Windows::Forms::CheckBox^ checkBoxNeuesFenster; private: System::Windows::Forms::CheckBox^ checkBoxOptGroesse; private: System::Windows::Forms::TextBox^ textBox1; private: System::Windows::Forms::PictureBox^ pictureBox1; private: System::Windows::Forms::OpenFileDialog^ openFileDialog1; private: System::Windows::Forms::ListBox^ listBox1; private: System::Windows::Forms::Button^ buttonBeenden1; private: System::Windows::Forms::Button^ buttonStarten; private: System::Windows::Forms::Button^ buttonAuswaehlen; private: System::Windows::Forms::OpenFileDialog^ openFileDialog2; private: System::Windows::Forms::Timer^ timer1; private: System::ComponentModel::IContainer^ components; private: /// <summary> /// Erforderliche Designervariable. /// </summary> #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->components = (gcnew System::ComponentModel::Container()); this->tabControl1 = (gcnew System::Windows::Forms::TabControl()); this->tabPageEinzel = (gcnew System::Windows::Forms::TabPage()); this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox()); this->checkBoxNeuesFenster = (gcnew System::Windows::Forms::CheckBox()); this->checkBoxOptGroesse = (gcnew System::Windows::Forms::CheckBox()); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->buttonBeenden = (gcnew System::Windows::Forms::Button()); this->buttonOeffnen = (gcnew System::Windows::Forms::Button()); this->buttonAnzeigen = (gcnew System::Windows::Forms::Button()); this->tabPageSchau = (gcnew System::Windows::Forms::TabPage()); this->listBox1 = (gcnew System::Windows::Forms::ListBox()); this->buttonBeenden1 = (gcnew System::Windows::Forms::Button()); this->buttonStarten = (gcnew System::Windows::Forms::Button()); this->buttonAuswaehlen = (gcnew System::Windows::Forms::Button()); this->openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog()); this->openFileDialog2 = (gcnew System::Windows::Forms::OpenFileDialog()); this->timer1 = (gcnew System::Windows::Forms::Timer(this->components)); this->tabControl1->SuspendLayout(); this->tabPageEinzel->SuspendLayout(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->BeginInit(); this->tabPageSchau->SuspendLayout(); this->SuspendLayout(); // // tabControl1 // this->tabControl1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) | System::Windows::Forms::AnchorStyles::Left) | System::Windows::Forms::AnchorStyles::Right)); this->tabControl1->Controls->Add(this->tabPageEinzel); this->tabControl1->Controls->Add(this->tabPageSchau); this->tabControl1->Location = System::Drawing::Point(-2, -3); this->tabControl1->Name = L"tabControl1"; this->tabControl1->SelectedIndex = 0; this->tabControl1->Size = System::Drawing::Size(287, 264); this->tabControl1->TabIndex = 0; // // tabPageEinzel // this->tabPageEinzel->Controls->Add(this->pictureBox1); this->tabPageEinzel->Controls->Add(this->checkBoxNeuesFenster); this->tabPageEinzel->Controls->Add(this->checkBoxOptGroesse); this->tabPageEinzel->Controls->Add(this->textBox1); this->tabPageEinzel->Controls->Add(this->buttonBeenden); this->tabPageEinzel->Controls->Add(this->buttonOeffnen); this->tabPageEinzel->Controls->Add(this->buttonAnzeigen); this->tabPageEinzel->Location = System::Drawing::Point(4, 22); this->tabPageEinzel->Name = L"tabPageEinzel"; this->tabPageEinzel->Padding = System::Windows::Forms::Padding(3); this->tabPageEinzel->Size = System::Drawing::Size(279, 238); this->tabPageEinzel->TabIndex = 0; this->tabPageEinzel->Text = L"Einzelbild"; this->tabPageEinzel->UseVisualStyleBackColor = true; this->tabPageEinzel->Enter += gcnew System::EventHandler(this, &Form1::tabPageEinzel_Enter); // // pictureBox1 // this->pictureBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) | System::Windows::Forms::AnchorStyles::Left) | System::Windows::Forms::AnchorStyles::Right)); this->pictureBox1->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle; this->pictureBox1->Location = System::Drawing::Point(6, 6); this->pictureBox1->Name = L"pictureBox1"; this->pictureBox1->Size = System::Drawing::Size(183, 161); this->pictureBox1->SizeMode = System::Windows::Forms::PictureBoxSizeMode::Zoom; this->pictureBox1->TabIndex = 6; this->pictureBox1->TabStop = false; // // checkBoxNeuesFenster // this->checkBoxNeuesFenster->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left)); this->checkBoxNeuesFenster->AutoSize = true; this->checkBoxNeuesFenster->Location = System::Drawing::Point(123, 204); this->checkBoxNeuesFenster->Name = L"checkBoxNeuesFenster"; this->checkBoxNeuesFenster->Size = System::Drawing::Size(95, 17); this->checkBoxNeuesFenster->TabIndex = 4; this->checkBoxNeuesFenster->Text = L"Neues Fenster"; this->checkBoxNeuesFenster->UseVisualStyleBackColor = true; this->checkBoxNeuesFenster->CheckedChanged += gcnew System::EventHandler(this, &Form1::checkBoxNeuesFenster_CheckedChanged); // // checkBoxOptGroesse // this->checkBoxOptGroesse->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left)); this->checkBoxOptGroesse->AutoSize = true; this->checkBoxOptGroesse->Location = System::Drawing::Point(6, 204); this->checkBoxOptGroesse->Name = L"checkBoxOptGroesse"; this->checkBoxOptGroesse->Size = System::Drawing::Size(99, 17); this->checkBoxOptGroesse->TabIndex = 3; this->checkBoxOptGroesse->Text = L"Optimale Größe"; this->checkBoxOptGroesse->UseVisualStyleBackColor = true; this->checkBoxOptGroesse->CheckedChanged += gcnew System::EventHandler(this, &Form1::checkBox1_CheckedChanged); // // textBox1 // this->textBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left)); this->textBox1->Location = System::Drawing::Point(6, 178); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(197, 20); this->textBox1->TabIndex = 2; // // buttonBeenden // this->buttonBeenden->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right)); this->buttonBeenden->Location = System::Drawing::Point(195, 102); this->buttonBeenden->Name = L"buttonBeenden"; this->buttonBeenden->Size = System::Drawing::Size(75, 23); this->buttonBeenden->TabIndex = 5; this->buttonBeenden->Text = L"Beenden"; this->buttonBeenden->UseVisualStyleBackColor = true; this->buttonBeenden->Click += gcnew System::EventHandler(this, &Form1::buttonBeenden_Click); // // buttonOeffnen // this->buttonOeffnen->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right)); this->buttonOeffnen->Location = System::Drawing::Point(195, 60); this->buttonOeffnen->Name = L"buttonOeffnen"; this->buttonOeffnen->Size = System::Drawing::Size(75, 23); this->buttonOeffnen->TabIndex = 0; this->buttonOeffnen->Text = L"Öffnen"; this->buttonOeffnen->UseVisualStyleBackColor = true; this->buttonOeffnen->Click += gcnew System::EventHandler(this, &Form1::buttonOeffnen_Click); // // buttonAnzeigen // this->buttonAnzeigen->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right)); this->buttonAnzeigen->Location = System::Drawing::Point(195, 19); this->buttonAnzeigen->Name = L"buttonAnzeigen"; this->buttonAnzeigen->Size = System::Drawing::Size(75, 23); this->buttonAnzeigen->TabIndex = 1; this->buttonAnzeigen->Text = L"Anzeigen"; this->buttonAnzeigen->UseVisualStyleBackColor = true; this->buttonAnzeigen->Click += gcnew System::EventHandler(this, &Form1::buttonAnzeigen_Click); // // tabPageSchau // this->tabPageSchau->Controls->Add(this->listBox1); this->tabPageSchau->Controls->Add(this->buttonBeenden1); this->tabPageSchau->Controls->Add(this->buttonStarten); this->tabPageSchau->Controls->Add(this->buttonAuswaehlen); this->tabPageSchau->Location = System::Drawing::Point(4, 22); this->tabPageSchau->Name = L"tabPageSchau"; this->tabPageSchau->Padding = System::Windows::Forms::Padding(3); this->tabPageSchau->Size = System::Drawing::Size(279, 238); this->tabPageSchau->TabIndex = 1; this->tabPageSchau->Text = L"Bilderschau"; this->tabPageSchau->UseVisualStyleBackColor = true; this->tabPageSchau->Enter += gcnew System::EventHandler(this, &Form1::tabPageSchau_Enter); // // listBox1 // this->listBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) | System::Windows::Forms::AnchorStyles::Left) | System::Windows::Forms::AnchorStyles::Right)); this->listBox1->FormattingEnabled = true; this->listBox1->Location = System::Drawing::Point(3, 6); this->listBox1->Name = L"listBox1"; this->listBox1->Size = System::Drawing::Size(183, 121); this->listBox1->TabIndex = 3; // // buttonBeenden1 // this->buttonBeenden1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right)); this->buttonBeenden1->Location = System::Drawing::Point(195, 105); this->buttonBeenden1->Name = L"buttonBeenden1"; this->buttonBeenden1->Size = System::Drawing::Size(75, 23); this->buttonBeenden1->TabIndex = 2; this->buttonBeenden1->Text = L"Beenden"; this->buttonBeenden1->UseVisualStyleBackColor = true; this->buttonBeenden1->Click += gcnew System::EventHandler(this, &Form1::buttonBeenden1_Click); // // buttonStarten // this->buttonStarten->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right)); this->buttonStarten->Location = System::Drawing::Point(195, 64); this->buttonStarten->Name = L"buttonStarten"; this->buttonStarten->Size = System::Drawing::Size(75, 23); this->buttonStarten->TabIndex = 1; this->buttonStarten->Text = L"Startem"; this->buttonStarten->UseVisualStyleBackColor = true; this->buttonStarten->Click += gcnew System::EventHandler(this, &Form1::buttonStarten_Click); // // buttonAuswaehlen // this->buttonAuswaehlen->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Right)); this->buttonAuswaehlen->Location = System::Drawing::Point(195, 25); this->buttonAuswaehlen->Name = L"buttonAuswaehlen"; this->buttonAuswaehlen->Size = System::Drawing::Size(75, 23); this->buttonAuswaehlen->TabIndex = 0; this->buttonAuswaehlen->Text = L"Auswählen"; this->buttonAuswaehlen->UseVisualStyleBackColor = true; this->buttonAuswaehlen->Click += gcnew System::EventHandler(this, &Form1::buttonAuswaehlen_Click); // // openFileDialog1 // this->openFileDialog1->FileName = L" "; this->openFileDialog1->Filter = L"Grafikdateien|*.bmp;*.gif;*.jpg;*.png;*tif;*.wmf|BMP-Dateien|*.bmp|GIF-Dateien|*." L"gif|WMF-Dateien|*wmf"; this->openFileDialog1->FileOk += gcnew System::ComponentModel::CancelEventHandler(this, &Form1::openFileDialog1_FileOk); // // openFileDialog2 // this->openFileDialog2->Filter = L"Grafikdateien|*.bmp;*.gif;*.jpg;*.png;*tif;*.wmf|BMP-Dateien|*.bmp|GIF-Dateien|*." L"gif|WMF-Dateien|*.wmf"; this->openFileDialog2->Multiselect = true; this->openFileDialog2->FileOk += gcnew System::ComponentModel::CancelEventHandler(this, &Form1::openFileDialog2_FileOk); // // timer1 // this->timer1->Interval = 5000; this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick); // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(284, 262); this->Controls->Add(this->tabControl1); this->Name = L"Form1"; this->Text = L"Bildbetrachter"; this->WindowState = System::Windows::Forms::FormWindowState::Maximized; this->tabControl1->ResumeLayout(false); this->tabPageEinzel->ResumeLayout(false); this->tabPageEinzel->PerformLayout(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->EndInit(); this->tabPageSchau->ResumeLayout(false); this->ResumeLayout(false); } #pragma endregion private: System::Void buttonBeenden_Click(System::Object^ sender, System::EventArgs^ e) { Close(); } private: System::Void buttonAnzeigen_Click(System::Object^ sender, System::EventArgs^ e) { // wenn ein Eintrag im Eingabefeld steht, laden wir das entsprechende Bild if (textBox1 -> Text != String::Empty) { // existiert die Datei überhaupt? if (IO::File::Exists(textBox1 -> Text)) // soll die Datei in einem neuen Fenster angezeigt werden? if (checkBoxNeuesFenster -> Checked) { // das neue Formular erzeugen formMax ^neuesFormular = gcnew formMax(); neuesFormular -> bildLaden(textBox1 -> Text); // das Formular modal anzeigen neuesFormular -> ShowDialog(); /* textBox1 -> Text = Load(openFileDialog1 -> FileName);*/ } else // wenn ja: dann laden und anzeigen pictureBox1 -> Load(textBox1 -> Text); else // bitte in einer Zeile eingeben MessageBox::Show("Die Datei existiert nicht!", "Fehler", MessageBoxButtons::OK, MessageBoxIcon::Error); } } private: System::Void checkBox1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { if (checkBoxOptGroesse -> Checked) pictureBox1 -> SizeMode = PictureBoxSizeMode::Zoom; else pictureBox1 -> SizeMode = PictureBoxSizeMode::Normal; } private: System::Void buttonOeffnen_Click(System::Object^ sender, System::EventArgs^ e) { openFileDialog1 -> ShowDialog(); } private: System::Void openFileDialog1_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { // den Namen der ausgewählten Datei in das Eingabefeld schreiben textBox1 -> Text = openFileDialog1 -> FileName; // die eigene Methode buttonAnzeigen_Click() aufrufen buttonAnzeigen_Click(sender, e); } private: System::Void buttonBeenden1_Click(System::Object^ sender, System::EventArgs^ e) { Close(); } private: System::Void buttonAuswaehlen_Click(System::Object^ sender, System::EventArgs^ e) { openFileDialog2 -> ShowDialog(); } private: System::Void openFileDialog2_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { // ein neues Array für den Typ String anleben und die markierten Namen kopieren array <String^> ^dateien = openFileDialog2 -> FileNames; // wenn sich noch Einträge in dem Listenfeld befinden, löschen wir Sie if (listBox1 -> Items -> Count != 0) listBox1 -> Items -> Clear(); // die Namen in das Listenfeld kopieren for each (String ^datei in dateien) listBox1 -> Items -> Add(datei); } private: System::Void buttonStarten_Click(System::Object^ sender, System::EventArgs^ e) { // befinden sich überhaupt Einträge in der Liste? // wenn nicht, erzeugen wir eine Meldung und verlassen die Methode wieder if (listBox1 -> Items -> Count == 0) { // bitte in einer Zeile eingeben MessageBox::Show("Sie müssen erst Dateien auswählen!", "Fehler", MessageBoxButtons::OK, MessageBoxIcon::Error); return; } // ist kein Eintrag im Listenfeld markiert? if (listBox1 -> SelectedIndex == -1) { listBox1 -> SelectedIndex = 0; // ein neues Fenster für die Bilderschau erzeugen fensterBilderschau = gcnew formMax(); // das erste Bild laden // bitte in einer Zeile eingeben fensterBilderschau -> bildLaden(listBox1 -> SelectedItem -> ToString()); // den titel des Formulars auf Bilderschau setzen fensterBilderschau -> Text = "Bilderschau"; // das Systemmenü und das Schließen-Symbol ausblenden fensterBilderschau -> ControlBox = false; // das Formlar anzeigen fensterBilderschau -> Show(); timer1 -> Start(); } } private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { // ist der letzte Eintrag in der Liste noch nicht erreicht? // bitte in einer Zeile eingeben if (listBox1 -> SelectedIndex < listBox1 -> Items -> Count - 1) { // den nächsten Eintrag markieren listBox1 -> SelectedIndex++; // und das Bild laden // bitte in einer Zeile eingeben fensterBilderschau -> bildLaden(listBox1 -> SelectedItem -> ToString()); // einen Sound aus der Systemsteuerung abspielen hier für den Stern System::Media::SystemSounds::Asterisk -> Play(); } // beim letzent Bild wieder aufräumen else { // die Markierungen löschen listBox1 -> SelectedIndex = -1; // den Timer anhalten timer1 -> Stop(); // das Fenster Bilderschau schließen fensterBilderschau -> Close(); } } private: System::Void tabPageEinzel_Enter(System::Object^ sender, System::EventArgs^ e) { AcceptButton = buttonAnzeigen; } private: System::Void tabPageSchau_Enter(System::Object^ sender, System::EventArgs^ e) { AcceptButton = buttonStarten; } private: System::Void checkBoxNeuesFenster_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { if (checkBoxNeuesFenster -> Checked) { buttonAnzeigen_Click(sender, e); /*pictureBox1 =formMax -> bildLaden(textBox1 -> Text);*/ } } }; } Die formMax.h Und die Bildbetrachter.cpp Wenn ich das Programm starte, ist der Bildbetrachter erst einmal leer. Dann möchte ich aber gleich eine "Große Darstellung" öffnen und setze bei der CheckBox das Häckchen, gehe dann auf den Button Öffnen und lass mir das Bild anzeigen. Funktioniert auch. Jetzt mein Problem: Ich möchte, dass genau das Bild, welches im Neuen Fenster erscheint (es wird die formMax sein) auch in dem Register Einzelbild automatisch erscheint. Ich denke mir das so, dass entweder die bictureBox1 oder tabPageEinzel die textBox1 liest und dann das Bild anzeigt. Habe schon viele Dinge ausprbiert, aber bin bis jetzt noch nicht auf ein Ergebnsi gekommen. Brauche da ansätze, welche "mitgelieferten Ereignisse, Eigenschaften etc. zu benutzen sind. Bin für jeden Hinweis dankbar. Gruß lempy
  24. Hey Klotzkopp Also ist erste "vorwärts Ausgabe" oder vielmehr die Methode ausgeben() so zu sagen der "Mensch" der mir die Arbeit auf Stapel legt "Bonspiezer". Der fängt natürlich mit der 1 an. Wenn ich dann diesen Stapel weiter bearbeite, dann nehme ich den ersten Zettel für mich runter der für mich als erste Zahl die 3 enthält (rückwärts Ausgabe)? Lieben Dank lempy

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