Kommunikation zwischen Formularen
-
Ich schreibe im moment ein Programm mit mehreren Formularen. Wie kann ich zwischen den einzelnen Formularen Variablen hin und her geben?
Also z.B.: vom ersten in das dritte Formular eine Stringvariablewie den namen?
Kann mir da jemand malhelfen?
-
Guck mal in der FAQ unter Forms "Variablenübergabe an andere Form" oder so
-
Funktioniert nicht der gibt mir immer einen Fehler im Adress bereich aus!
-
Zeig doch mal ein bisschen Code.
(den Text, dass das keine gescheite Fehlerbeschreibung ist verkneif ich mir.. dass solltest du selber wissen
)
-
Zwei Möglichkeiten: Dur wartest bis meine Kristallkugel wieder funtkioniert (kann noch dauern), oder Du gibst uns ein paar mehr Informationen.

Wie versuchst Du es denn zur Zeit? Wie lautet der genaue Fehler?
Grüße
-
Stimmt sorry bin im moment aber unter zeitstress weil das bis heute abend alles laufen muss.
Der genaue Fehler lautet:
Im Projekt "Projekt1.exe" ist eine Exception der Klasse EAccessViolation aufgetretten Meldung: 'Zugriffsverletzung bei Adresse 0040193 in Modul 'Projekt1.exe.' Lesen sie die Adresse 000002C4.' Prozeß wurde angehalten die einzelne Anweisung oder Start wiederholen.Hier mal die Formulare:
Unit2.cppvoid __fastcall TForm2::FormCreate(TObject *Sender) { Position = poScreenCenter; Form2->Show(); }Unit1.cpp
void __fastcall TForm1::FormCreate(TObject *Sender) { Position = poScreenCenter; Form2->Label1->Caption = "Hans"; Form2->Show(); }Hier auch noch die .h dateien
Unit2.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <jpeg.hpp> #include <Graphics.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TButton *Button1; TButton *Button2; TImage *Image1; TImage *Image2; TImage *Image3; TImage *Image4; TImage *Image5; TLabel *Label1; TLabel *Label2; void __fastcall Button1Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall FormCreate(TObject *Sender); private: // Anwenderdeklarationen public: // Anwenderdeklarationen __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endifUnti1.h
//--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Dialogs.hpp> #include <ExtCtrls.hpp> #include <jpeg.hpp> #include <Graphics.hpp> //--------------------------------------------------------------------------- class TForm2 : public TForm { __published: // Von der IDE verwaltete Komponenten TLabel *Label1; TLabel *Label2; TLabel *Label4; TEdit *Edit1; TButton *Button1; TButton *Button4; TImage *Image2; TImage *Image3; TImage *Image4; TImage *Image5; TButton *Button5; TButton *Button6; TSaveDialog *SaveDialog1; TLabel *Label3; void __fastcall Button4Click(TObject *Sender); void __fastcall Button5Click(TObject *Sender); void __fastcall Button6Click(TObject *Sender); void __fastcall FormCreate(TObject *Sender); void __fastcall Button1Click(TObject *Sender); private: // Anwenderdeklarationen public: // Anwenderdeklarationen __fastcall TForm2(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm2 *Form2; //--------------------------------------------------------------------------- #endif
-
Ich gehe mal davon aus, dass Form1 vor Form2 erzeugt wird. Also existiert es im Moment der Zuweisung noch nicht. Platziere den Code aus FormCreate mal in FormShow.
-
void __fastcall TForm2::FormCreate(TObject *Sender) { Position = poScreenCenter; Form2->Show(); // ??? wozu soll das gut sein }Aber der Fehler tritt wohl eher hier auf:
void __fastcall TForm1::FormCreate(TObject *Sender) { Position = poScreenCenter; Form2->Label1->Caption = "Hans"; // Form2 existiert an dieser Stelle noch nicht! Form2->Show(); // auch hier noch nicht. }Wenn Du das in Form1->OnShow() machst, sollte es funktionieren...
Grüße
-
Haha ich war schneller!
-
War aber verdammt knapp...
