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

    void __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;
    //---------------------------------------------------------------------------
    #endif
    

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


Anmelden zum Antworten