Button Namen ändern aus externe Datei



  • Also ich habe 2 Buttons die fest sind. Dadrunter habe ich dann so ca. 10 Buttons welche einen bestimmten Wert bekommen soll.
    Z.B. Button1:Abteilung 1; Button2:Abteilung 2
    Wenn ich nun auf Button 1 klicke möchte ich das er mir alle Mitarbeiter aus der Abteilung 1 auf die Button schreibt.
    So habe ich dann in der form1.h (also da wo das Formular erstellt wird) ganz unten

    public: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    					button3->Text= "Meyer";	 
    					button4->Text= "Mustermann";	 
    					  }
     public: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    					button3->Text= "Max";	 
    					button4->Text= "Müller";	 
    					  }
    

    stehen und sobald z.B. jetzt ein Mitarbeiter eine Abteilung verlässt oder ein neuer hinzukommt müsste ich ja das Programm ändern. Einfacher wäre es in dem fall doch einfach in der Datenbank den Namen zu ändern.
    Wie müsste folgendes eigendlich richtig aussehen

    formbutton^ bf = gcnew formbutton(/* muss hier button1 stehen??*/ );
    
               bf->but(2);//ID der Abteilung
    


  • Lol, jetzt verstehe ich was du vohr hast.

    Eine art Menü oder Vohrfahrenbaum. Dafür eignet sich am besten ListView.

    Diese läst sich auch gut mit einer Datenbank verbinden.

    Wenn du dass nur mit Buttons machen würdest, würde das unheimlich unübersichtlich, doppelt und dreifach werden. Nicht nur weil sich dann sehr oft der Text der Buttons ändert. Sondern weil dann auch die OnClick Events entsprechend je nach Text-Eigenschaft anders reagieren müssten. Weil wenn du ja einem Button einen neuen text zuweist soll er ja wohl auch eine andere Funktion auslösen beim draufklicken.

    Allerdings währe es auch möglich die Buttons neben der ListView zu verwenden. Z.B. wenn auf einen Knotenpunkt geklickt wurde, sollen alle Einträge unter diesem Knoten über die Buttons aufgelistet werden. Wird dann auf den Entsprechenden Button geklickt, wird das selbe wie bei einem Klick auf einem Eintrag unter diesem Knoten, ausgeführt.





  • Nicht nur weil sich dann sehr oft der Text der Buttons ändert. Sondern weil dann auch die OnClick Events entsprechend je nach Text-Eigenschaft anders reagieren müssten. Weil wenn du ja einem Button einen neuen text zuweist soll er ja wohl auch eine andere Funktion auslösen beim draufklicken.

    Beim draufklicken sollen die Buttons lediglich ihren Wert weiter geben z.B. wenn ich auf Meyer klicke soll in einem Feld alles über Meyer aus der Datenbank stehen (Name,Telefonnummer,Ort usw.)
    Also wenn es irgendwie möglich wäre würde ich schon gern Buttons haben oder etwas ähnliches wo ich nur einmal draufklicekn muss



  • Brobier mal TreeView aus:

    #pragma once
    
    namespace Beispiel {
    
    	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
    	///
    	/// 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 Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::TreeView^  treeView1;
    	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)
    		{
    			System::Windows::Forms::TreeNode^  treeNode1 = (gcnew System::Windows::Forms::TreeNode(L"Knoten0"));
    			System::Windows::Forms::TreeNode^  treeNode2 = (gcnew System::Windows::Forms::TreeNode(L"Knoten1"));
    			System::Windows::Forms::TreeNode^  treeNode3 = (gcnew System::Windows::Forms::TreeNode(L"Knoten2"));
    			System::Windows::Forms::TreeNode^  treeNode4 = (gcnew System::Windows::Forms::TreeNode(L"Knoten3"));
    			System::Windows::Forms::TreeNode^  treeNode5 = (gcnew System::Windows::Forms::TreeNode(L"Knoten4"));
    			this->treeView1 = (gcnew System::Windows::Forms::TreeView());
    			this->SuspendLayout();
    			// 
    			// treeView1
    			// 
    			this->treeView1->Location = System::Drawing::Point(33, 48);
    			this->treeView1->Name = L"treeView1";
    			treeNode1->Name = L"Knoten0";
    			treeNode1->Text = L"Knoten0";
    			treeNode2->Name = L"Knoten1";
    			treeNode2->Text = L"Knoten1";
    			treeNode3->Name = L"Knoten2";
    			treeNode3->Text = L"Knoten2";
    			treeNode4->Name = L"Knoten3";
    			treeNode4->Text = L"Knoten3";
    			treeNode5->Name = L"Knoten4";
    			treeNode5->Text = L"Knoten4";
    			this->treeView1->Nodes->AddRange(gcnew cli::array< System::Windows::Forms::TreeNode^  >(5) {treeNode1, treeNode2, treeNode3, 
    				treeNode4, treeNode5});
    			this->treeView1->Size = System::Drawing::Size(417, 275);
    			this->treeView1->TabIndex = 0;
    			this->treeView1->AfterSelect += gcnew System::Windows::Forms::TreeViewEventHandler(this, &Form1::treeView1_AfterSelect);
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(731, 427);
    			this->Controls->Add(this->treeView1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	private: System::Void treeView1_AfterSelect(System::Object^  sender, System::Windows::Forms::TreeViewEventArgs^  e) {
    				 for(int Zahl = 0; Zahl < 10; Zahl++) {
    					 e->Node->Nodes->Add(Convert::ToString(Zahl));
    				 }
    			 }
    	};
    }
    

    Natürlich kannst du jedes Item einem Button zu weisen. Aber wenn es nur als eine art auflistung da stehen sol, ohne das eine Methode ausgelöst werden soll wenn man dann auf so einem Button klickt, dann sind Button die falsche wahl.



  • private: System::Void treeView1_AfterSelect(System::Object^  sender, System::Windows::Forms::TreeViewEventArgs^  e) {
    				 for(int Zahl = 0; Zahl < 10; Zahl++) {
    					 e->Node->Nodes->Add(e->Node->Text + " " + Convert::ToString(Zahl));
    				 }
    			 }
    

    😃 😃 😃



  • Ich hätte es mir eher so gedacht wie z.B. bei einer Kasse.
    Wo man ja auch meist oben die Warengruppen hat und dann die einzelene Waren drunter und wenn man auf einen Button klickt das dieser dann irgendwo in einer Auflistung incl. Preis erscheint.



  • Das ist das!

    Ein Knoten währe eine Gruppe.
    Du könntest es zum Beispiel so machen, dass wenn du auf einem Knoten klickst, dass alle Nachnamen die zu dieser Gruppe gehöhren aufgelistet werden. Klickst du dann auf einen Namen, so kannst du dann zum Beispiel veranlassen das in der TextBox (MultiLine = true;) neben an die persöhnlichen Daten von dieser angeklickten Person angezeigt werden.



  • Ich glaub das war mein Fehler mit dem Beispiel. Also das oben mit den Abteilungen war nur ein Beispiel um zu erklären was ich genau mit den Buttons machen wollte.
    Ich habe ein Touchscreen und benötige hierfür Buttons die ich anklicken kann.
    Ist für eine kleine Kasse, deshalb sollten die Namen auch möglichst aus einer Datenbank sein damit man die Preise einfacher ändern kann.



  • Okay also

    du wilst für jeden folgendem Item ein Button instanzieren?
    Dann musst du aber nicht eine Form instanzieren sondern ein Button!

    Dass musst du in die Methode reinschreiben wo die Datenbank gelesen wird.
    Dazu dann eine Methode die, die Buttons einigermaßen anordnet oder du machst ein Panel und weist die Buttons dem Panel, über Panel->Controls zu, ist warscheinlich einfacher.

    Dann wenn auf ein Button geklickt wurde der bereits einen Text aus der Datenbank besitzt, muss dieser Text als anfrage wieder an die Datenbank zurückgehen und dass prozedure geht von vorne los.

    Verstehst du es nicht kannst du leider wohl nicht Algoritmisch denken.



  • Dazu dann eine Methode die, die Buttons einigermaßen anordnet oder du machst ein Panel und weist die Buttons dem Panel, über Panel->Controls zu, ist warscheinlich einfacher.

    Ich habe mir gedacht das ich die Buttons schon vorher da stehen habe mit genauer Position und alles, nur halt ohne Namen.
    Klickt man auf ein leeren Button führt er zwar eine Funktion aus aber hier merkt er(die Funktion) dann das kein Name in der Datenbank ist und es passiert nichts.
    Klicke ich dann auf einen der Oberbegriffe. Soll eine Funktion ausgeführt werden die aus der Datenbank die Namen der Button ausließt und diese dann auch den Buttons zu weißt.
    Sodasss wenn ich nun auf einen der Buttons klicke, er den dazugehörigen Eintrag auch in der Datenbank findet und weiter arbeiten kann.
    Daher wollte ich auch "nur" wissen ob ich den Buttons Namen aus der Datenbank zuweisen kann.

    Buttons aus einer anderen Funktion heraus zu erstellen möchte ich garnicht.

    Daher habe ich in meiner form1.h die Funktion

    formbutton^ bf = gcnew formbutton(/*was muss hier rein */);
    
               bf->but(2);
    
    public: void setzeButtonText(String ^text)
           {
              button1->Text = "Test";
            }
    

    Nur diese kann ich nicht ausführen.
    Ich denke mal es liegt daran das ich form1 nach formbutton.h include

    #include "Form1.h"
    #include "kassebutton.h"

    Aber dies muss ja da ich sonst nicht mit formbutton auf form1.h zugreifen kann.

    #pragma once
    
    namespace buttonform {
    using namespace System;
    using namespace formularprojekt;
    ref class formbutton// ... blabla
    {
    
    public: formbutton(Form1^ form1)
            {
    
               // InitializeBlabla
    
               this->form1 = form1;          
            }
    
         int   but(int von)
            {
               // Tuwas mit form1!!
               // z.B.:
              form1->setzeButtonText("test");
    		   return 0;
            }
    
    private: Form1^ form1;
    };
    }
    


  • mhhh wo hast du denn deine Methode stehen die, die Datenbankabfrage macht?

    Tatsache ist halt, dass form1 gleich beim Process start instanziert wird. Per Application::Run(gcnew form1) Oder so ähnlich. An diesem ort kannst du dieses instanzierte Form Objekt nur ansprechen in dem du denn neuen instanzen nammen nimmst.

    Also instanziere form1 vor Application: System::Windows::Forms::Form ^form1 = gcnew formbutton();
    und füge dann formbutton ohne gcnew in Application::Run(ein).

    Ansonsten kommst nur per Namespace drann. Besser ist formbutton->

    Das mit den Buttons hat einen enormen nachteil:
    Der instanzierungsnahme ist konstant! Also alle Buttons haben dann einen festen Namen, somit kannst du dann als Identifizierung wirklich nur den Button Text nehmen und das wird dann ne ziemliche String Schneid Dreh sauerei!

    Es sei denn wie bereits erwähnt du nimmst dann den Button Text als Filterwort bei der Datenbankanfrage. Dann würden alle Listen-Buttons nur auf die Methode der Datenbankanfrage verweisen und du müsstest seinen Button Text mit übergeben. Und dann eben in dieser Datenbankabfrage-Methode diesen String mit einStringen. Na brost 😃

    Tschuldigung für meine sausprache!



  • System::Void buttonItem1_Click(System::Object^  sender, System::EventArgs^  e) {
        DB_Query(this->buttonItem1->Text);
    }
    System::Void buttonItem2_Click(System::Object^  sender, System::EventArgs^  e) {
        DB_Query(this->buttonItem1->Text);
    }
    System::Void buttonItem3_Click(System::Object^  sender, System::EventArgs^  e) {
        DB_Query(this->buttonItem1->Text);
    }
    System::Void buttonItem4_Click(System::Object^  sender, System::EventArgs^  e) {
        DB_Query(this->buttonItem1->Text);
    }
    System::Void buttonItem5_Click(System::Object^  sender, System::EventArgs^  e) {
        DB_Query(this->buttonItem1->Text);
    }
    System::Void buttonItem6_Click(System::Object^  sender, System::EventArgs^  e) {
        DB_Query(this->buttonItem1->Text);
    }
    System::Void buttonItem7_Click(System::Object^  sender, System::EventArgs^  e) {
        DB_Query(this->buttonItem1->Text);
    }
    
    void DB_Query(String ^By) {
        Deinne DatenbankMethode("Datenbank Syntax Anfrage Command + Operator " + By);
        ...
    }
    


  • ubs... die (buttonItem)Nummern hintern den this sind falsch.



  • Ansonsten kommst nur per Namespace drann. Besser ist formbutton->

    Du meinst hier dran?

    formbutton^ bf = gcnew formbutton(fenster);
    
               bf->but(2);
    
    /*in der main habe ich nun:*/
    Form1^ fenster;
    fenster= gcnew Form1();
    

    Ich habe ja eigendlich "namespace buttonform {" erstellt doch, wenn ich nun in form1.h
    using namespace buttonform; mache kommt da

    'buttonform': Es ist kein Namespace mit diesem Namen vorhanden
    'formbutton': nichtdeklarierter Bezeichner

    Das liegt doch sicher an der reihenfolge des includens oder nicht?



  • Sorry hier wird langsam der faden Verloren.

    Ich kann mir nicht entgeistern wie deine Projektmappe aus sieht.

    Tu einfach mal alle Files hier posten und schreibe über jedem

    den filename. Damit ich überhaupt deine Frage verstehe.



  • formularprojekt.cpp

    #include "stdafx.h"
    #include <windows.h>
    #include "datenbank.h"
    #include <stdio.h>
    #include "Form1.h"
    #include "formbutton.h"
    #include <time.h>
    
    using namespace formularprojekt;
    using namespace buttonform;
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    Form1^ formbutton;
    formbutton= gcnew Form1();
    	Application::Run(formbutton);
    
    	return 0;
    }
    

    form1.h

    #pragma once
    
    namespace formularprojekt {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
            //using namespace buttonform;
    
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    
    	public:
    
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    
    	private: System::Windows::Forms::TextBox^  textBox1;
    	protected: 
    	private: System::Windows::Forms::Button^  button1;
    	private: System::Windows::Forms::Button^  button2;
    	private: System::Windows::Forms::Button^  button3;
    	private: System::Windows::Forms::Button^  button4;
    	private: System::Windows::Forms::Button^  button5;
    
    	private:
    
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    
    		void InitializeComponent(void)
    		{
    			this->textBox1 = (gcnew System::Windows::Forms::TextBox());
    			this->button1 = (gcnew System::Windows::Forms::Button());
    			this->button2 = (gcnew System::Windows::Forms::Button());
    			this->button3 = (gcnew System::Windows::Forms::Button());
    			this->button4 = (gcnew System::Windows::Forms::Button());
    			this->button5 = (gcnew System::Windows::Forms::Button());
    				this->SuspendLayout();
    			// 
    			// textBox1
    			// 
    			this->textBox1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
    				static_cast<System::Byte>(0)));
    			this->textBox1->Location = System::Drawing::Point(816, 12);
    			this->textBox1->Name = L"textBox1";
    			this->textBox1->Size = System::Drawing::Size(180, 29);
    			this->textBox1->TabIndex = 0;
    			this->textBox1->Text = L"0";
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(817, 133);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(44, 36);
    			this->button1->TabIndex = 1;
    			this->button1->Text = L"Warengruppe 1";
    			this->button1->UseVisualStyleBackColor = true;
    			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    			// 
    			// button2
    			// 
    			this->button2->Location = System::Drawing::Point(880, 133);
    			this->button2->Name = L"button2";
    			this->button2->Size = System::Drawing::Size(44, 36);
    			this->button2->TabIndex = 2;
    			this->button2->Text = L"Warengruppe 2";
    			this->button2->UseVisualStyleBackColor = true;
    			this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
    			// 
    			// button3
    			// 
    			this->button3->Location = System::Drawing::Point(941, 133);
    			this->button3->Name = L"button3";
    			this->button3->Size = System::Drawing::Size(44, 36);
    			this->button3->TabIndex = 3;
    			this->button3->UseVisualStyleBackColor = true;
    			this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
    			// 
    			// button4
    			// 
    			this->button4->Location = System::Drawing::Point(817, 91);
    			this->button4->Name = L"button4";
    			this->button4->Size = System::Drawing::Size(44, 36);
    			this->button4->TabIndex = 6;
    			this->button4->UseVisualStyleBackColor = true;
    			this->button4->Click += gcnew System::EventHandler(this, &Form1::button4_Click);
    			// 
    			// button5
    			// 
    			this->button5->Location = System::Drawing::Point(880, 91);
    			this->button5->Name = L"button5";
    			this->button5->Size = System::Drawing::Size(44, 36);
    			this->button5->TabIndex = 5;
    			this->button5->UseVisualStyleBackColor = true;
    			this->button5->Click += gcnew System::EventHandler(this, &Form1::button5_Click);
    
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(1008, 732);
    
    			this->Controls->Add(this->button5);
    			this->Controls->Add(this->button4);
    			this->Controls->Add(this->button3);
    			this->Controls->Add(this->button2);
    			this->Controls->Add(this->button1);
    			this->Controls->Add(this->textBox1);
    			this->Name = L"Form1";
    			this->Text = L"Form11";
    			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    			this->ResumeLayout(false);
    			this->PerformLayout();
    
    		}
    
    public: void setzeButtonText(String ^text)
           {
              button1->Text = "test";
            }
    
    #pragma endregion
    
    			private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    formbutton^ bf = gcnew formbutton(fenster);
    bf->but(1); 
    			}
    			private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    formbutton^ bf = gcnew formbutton(fenster);
    bf->but(2); 
    			}
    			private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
    DB_Query(this->buttonItem3->Text); 
    			}
    			private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) {
    DB_Query(this->buttonItem4->Text);
    			}
    			private: System::Void button5_Click(System::Object^  sender, System::EventArgs^  e) {
    DB_Query(this->buttonItem5->Text);
    			}
    			private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    		 }
    
    };
    }
    

    formbutton.h

    #pragma once
    
    namespace buttonform {
    using namespace System;
    using namespace formularprojekt;
    ref class formbutton // ... blabla
    {
    
    public: formbutton(Form1^ form1)
            {
    
               // InitializeBlabla
    
               this->form1 = form1;          
            }
    
         int   but(int von)
            {
               // Tuwas mit form1!!
               // z.B.:
              form1->setzeButtonText("test");
    		   return 0;
            }
    
    private: Form1^ form1;
    };
    }
    


  • .cpp (main)

    // Beispiel.cpp: Hauptprojektdatei.
    
    #include "stdafx.h"
    #include "Form1.h"
    
    using namespace Beispiel;
    
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	// Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    	// Hauptfenster erstellen und ausführen
    	Form1 ^Form = gcnew Form1();
    	Form->treeView1->Name = "treeView1";
    	Form->button1->Text = "I life in Form1.h";
    	Form->Mister();
    	Application::Run(Form);
    	Form->Mister();
    	return 0;
    }
    

    Form1.h

    #pragma once
    
    #include "Form2.h"
    
    namespace Beispiel {
    
    	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
    	///
    	/// 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 Form1 : public System::Windows::Forms::Form
    	{
    
    		Windows::Forms::Form ^form2;
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    			form2 = gcnew Form2();
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	public: System::Windows::Forms::TreeView^  treeView1;
    	private: System::Windows::Forms::TextBox^  textBox1;
    	public: System::Windows::Forms::Button^  button1;
    	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)
    		{
    			System::Windows::Forms::TreeNode^  treeNode1 = (gcnew System::Windows::Forms::TreeNode(L"Knoten0"));
    			System::Windows::Forms::TreeNode^  treeNode2 = (gcnew System::Windows::Forms::TreeNode(L"Knoten1"));
    			System::Windows::Forms::TreeNode^  treeNode3 = (gcnew System::Windows::Forms::TreeNode(L"Knoten2"));
    			System::Windows::Forms::TreeNode^  treeNode4 = (gcnew System::Windows::Forms::TreeNode(L"Knoten3"));
    			System::Windows::Forms::TreeNode^  treeNode5 = (gcnew System::Windows::Forms::TreeNode(L"Knoten4"));
    			this->treeView1 = (gcnew System::Windows::Forms::TreeView());
    			this->textBox1 = (gcnew System::Windows::Forms::TextBox());
    			this->button1 = (gcnew System::Windows::Forms::Button());
    			this->SuspendLayout();
    			// 
    			// treeView1
    			// 
    			this->treeView1->Location = System::Drawing::Point(33, 48);
    			this->treeView1->Name = L"treeView1";
    			treeNode1->Name = L"Knoten0";
    			treeNode1->Text = L"Knoten0";
    			treeNode2->Name = L"Knoten1";
    			treeNode2->Text = L"Knoten1";
    			treeNode3->Name = L"Knoten2";
    			treeNode3->Text = L"Knoten2";
    			treeNode4->Name = L"Knoten3";
    			treeNode4->Text = L"Knoten3";
    			treeNode5->Name = L"Knoten4";
    			treeNode5->Text = L"Knoten4";
    			this->treeView1->Nodes->AddRange(gcnew cli::array< System::Windows::Forms::TreeNode^  >(5) {treeNode1, treeNode2, treeNode3, 
    				treeNode4, treeNode5});
    			this->treeView1->Size = System::Drawing::Size(285, 275);
    			this->treeView1->TabIndex = 0;
    			this->treeView1->AfterSelect += gcnew System::Windows::Forms::TreeViewEventHandler(this, &Form1::treeView1_AfterSelect);
    			// 
    			// textBox1
    			// 
    			this->textBox1->Location = System::Drawing::Point(425, 81);
    			this->textBox1->Multiline = true;
    			this->textBox1->Name = L"textBox1";
    			this->textBox1->Size = System::Drawing::Size(263, 271);
    			this->textBox1->TabIndex = 1;
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(350, 25);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 2;
    			this->button1->Text = L"button1";
    			this->button1->UseVisualStyleBackColor = true;
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(731, 427);
    			this->Controls->Add(this->button1);
    			this->Controls->Add(this->textBox1);
    			this->Controls->Add(this->treeView1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->ResumeLayout(false);
    			this->PerformLayout();
    
    		}
    #pragma endregion
    	private: System::Void treeView1_AfterSelect(System::Object^  sender, System::Windows::Forms::TreeViewEventArgs^  e) {
    				 for(int Zahl = 0; Zahl < 10; Zahl++) {
    					 e->Node->Nodes->Add(e->Node->Text + " " + Convert::ToString(Zahl));
    				 }
    			 }
    
    			 public: void Mister(void) {
    						 form2->Text = "I em title";
    						 form2->ShowDialog();
    		}
    	};
    }
    


  • hmm.
    Wozu ist #include "Form2.h" da? bzw. was ist da drin?
    Wie änder ich da nun den Buttonnamen mit einem externen header(formbutton.h)



  • themonk schrieb:

    hmm.
    Wozu ist #include "Form2.h" da? bzw. was ist da drin?
    Wie änder ich da nun den Buttonnamen mit einem externen header(formbutton.h)

    Wenn du einen Button ändern wilst, der in einer System::Windows::Forms::Form Klasse ist und du ihn nicht in der selbigen Klasse ändern wilst, sondern von auserhalb, dann geht es nur dort wo du die besagte Form instanziert hast. Ansonsten müsstest du einen Zeiger von der instanzierung übergeben.

    Wenn du einen Button per Instanzierung der Form Klasse ändern wilst, dann würde alles neu gezeichnet werden, was in der Form ist und es ist nicht die selbe Form die durch Application::Run(...) zur anzeige gebracht wurde.

    Daher wie bereits oben erwähnt du musst die instanzierung ansprechen die ja zur anzeige gebracht wurde. Am sinnfolsten ist es jedoch aber bei mehren Form Klassen und Klassen die Methoden enthalten, die .cpp (main) als Startplatz zu nutzen.

    Dann kannst du z.b. dort wie in meinem Beispiel die, zur anzeige gebrachte Form, über den Instanznamen ansprechen.


Anmelden zum Antworten