Zugriff auf Formelemente außerhalb von Form.h



  • Hallo,
    ich habe eine Anfängerfrage, da ich bisher den (für mich wesentlich einfacher zu beherrschenden) C++-Builder gewohnt war.

    Wenn ich ein Windows.Forms Projekt erstelle, so erscheint der Aufbau der Form automatisch in Form1.h. Auch meine Event-Behandlungsroutinen erscheinen automatisch dort.

    Zur besseren Übersichtlichkeit würde ich einige Funktionen gerne in separate cpp Dateien auslagern, ich müßte aber von diesen Funktionen auf Elemente der Form zugreifen können, z. B. den Inhalt eines Textfeldes schreiben.
    Bisher geht das problemlos nur innerhalb von Form1.h, alle Versuche, das auszulagern, sind fehlgeschlagen, weil ich es einfach nicht kann und dazu per Suche nichts hilfreichendes finden konnte.
    Gibt es da eine einfache Möglichkeit, am besten mit einem kurzen Beispiel-Code?



  • Das .h File wurde hier drastisch gekürzt. Es geht ja nur darum, dass die Event Handling Routine nur deklariert wird. Definiert wird sie dann im .cpp File.

    Form1.h

    // Im namespace FormTest und in der Klasse Form1:
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e);
    

    Form1.cpp

    #include "stdafx.h"
    #include "Form1.h"
    
    namespace FormTest {
    
    	using namespace System::Diagnostics;
    
    	System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e)
    	{
    		Debug::WriteLine(L"Test");
    	}
    
    }
    

    Simon



  • Vielen Dank!
    Das hat sehr viel weiter geholfen. Es geht jetzt deutlich übersichtlicher.

    Ist es auch möglich, auf die Elemente von Form1 in einer (weiteren) cpp Datei zuzugreifen, die nicht als Form1.cpp mit Form1.h verbunden ist?



  • Ich habe das gleiche Problem wie W.
    Nach zwei Tagen online Recherche und dem Durchlesen von Galileocomputing: Einstieg in VC++ 2008 komme ich auch nicht weiter.

    Gibt es irgendwo ein minimalistisches Beispiel mit einer Textbox und einem Button, in dem vom *.cpp die Textbox gefüllt wird (oder etwas in der Art) ?

    Danke
    Manfred



  • W. Posur schrieb:

    Ist es auch möglich, auf die Elemente von Form1 in einer (weiteren) cpp Datei zuzugreifen, die nicht als Form1.cpp mit Form1.h verbunden ist?

    Nein das geht nicht.
    Du musst die Form1 bekannt machen, also includen.

    Gruß, Doug_HH



  • Hier mal ein Beispiel-Projekt.
    Ist so vielleicht besser zu verstehen.
    Berücksichtigt auch die Datenkapselung. :xmas2:

    http://www.rb-softarticle.com/Form1.rar

    :xmas2: Gruß, Doug_HH :xmas2:



  • Danke Doug_HH !

    Das war sehr hilfreich.

    Manfred


Anmelden zum Antworten