Forms - Variablenübergabe an andere Form



  • So, jetzt mach ich auch mal was für die FAQ zum Thema Variablenübergabe an eine andere Form.
    Ich mache dies an einem Beispiel, da dies das Thema am besten erklärt.
    Erst mal erzeugt ihr eine Form1 und Form2. Auf beide packt ihr ein TLabel, jeweils namens Label1. Auf Form1 packt ihr noch ein TTimer namens Timer1 - also alle Komponentennamen im Originalzustand.
    Dann seht zu, dass euer Code etwa so aussieht:

    PS: Nicht Copy und Paste !!! Die Ereignisse Timer1Timer und FormCreate müssen, wie üblich, vom Objekt-Inspektor bzw. durch Doppelklicken auf die Komponente erzeugt werden !!!

    die Datei Unit1.cpp:

    //------Unit1.cpp------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
        Cnt++;
        Label1->Caption = IntToStr(Cnt);
        Form2->Label1->Caption = Label1->Caption;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
        Cnt = 0;        //nur zur Sicherheit
    }
    //---------------------------------------------------------------------------
    

    die Datei Unit1.h:

    //------Unit1.h--------------------------------------------------------------
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:    // IDE-managed Components
            TTimer *Timer1;
            TLabel *Label1;
            void __fastcall Timer1Timer(TObject *Sender);
            void __fastcall FormCreate(TObject *Sender);
    private:    // User declarations
            int Cnt;
    public:     // User declarations
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    die Datei Unit2.cpp:

    //------Unit2.cpp------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::FormCreate(TObject *Sender)
    {
        Position = poScreenCenter;
        Form2->Show();
    }
    //---------------------------------------------------------------------------
    

    und schließlich die Datei Unit2.h:

    //------Unit2.h--------------------------------------------------------------
    
    #ifndef Unit2H
    #define Unit2H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm2 : public TForm
    {
    __published:    // IDE-managed Components
            TLabel *Label1;
            void __fastcall FormCreate(TObject *Sender);
    private:    // User declarations
    public:     // User declarations
            __fastcall TForm2(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm2 *Form2;
    //---------------------------------------------------------------------------
    #endif
    

    So ich denke, dass reicht in Bezug auf Variablenübergabe.

    [ Dieser Beitrag wurde am 14.05.2002 um 22:26 Uhr von junix editiert. ]



  • Ein Beispiel für den Zugriff auf Variablen über Properties.

    //  Unit1.h
    private:
      int Zaehler;
    
    // Unit2.h
    private:
      int fZaehler;
    protected:
      void __fastcall SetZaehler(int);
    public:
      __property int Zaehler = {read = fZaehler , write = SetZaehler};
    
    // Irgendwo in Unit1.cpp
    // (nicht vergessen, Unit2.h mit einzubinden)
    Form2->Zaehler = Zaehler;
    Form2->Show();
    
    // Unit2.cpp
    void __fastcall TForm2::SetZaehler(int zaehler)
    {
       fZaehler = zaehler;
       // und möglicherweise noch anderes Zeugs
    }
    

    [ Dieser Beitrag wurde am 14.05.2002 um 22:30 Uhr von junix editiert. ]


Anmelden zum Antworten