Variable über mehrere Forms



  • Definitiv nicht möglich-> da die in der 2. Form angelegte Variable keinen neuen Speicherplatz bekommt, sondern den gleichen benutzt.

    Du wirst einen konzeptionellen (logischen) Fehler haben.

    ggf. sende mit das Projekt mal zu -> cecke@marquardtnet.info

    (und nicht vergessen zu sagen, um welche Variablen es sich handelt)

    oder poste den massgeblichen Code hier



  • Lass lieber den Klamauk mit extern und mach eine Membervariable in Form1.
    Ist die sauberere Lösung. 😉



  • Ok, ich und meine logischen Fehler! Bei anderen find ich die Fehler, nur bei mir nie! 😡

    Codeauszug:

    Form1:

    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    Tfm_login *fm_login;
    AnsiString nutzer,passwt;
    //---------------------------------------------------------------------------
    __fastcall Tfm_login::Tfm_login(TComponent* Owner)
            : TForm(Owner)
    {
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall Tfm_login::bbtn_oeffnenClick(TObject *Sender)
    {
    
      nutzer=edt_nutzer->Text;
      passwt=maed_passwt->Text;
    .
    .
    .
    

    Form2:

    extern AnsiString nutzer;
    //---------------------------------------------------------------------------
    __fastcall Tfm_kontroll::Tfm_kontroll(TComponent* Owner)
            : TForm(Owner)
    {
      lbl_nutzer->Caption=nutzer;
    
    }
    //---------------------------------------------------------------------------
    .
    .
    .
    

    Danke Jungs!

    PS: Ja ich weiß das Form frm abgekürzt wird, das darf ich dann noch ändern :p



  • Jetzt wird EINMAL, wenn Form2 angelegt wird, der lbl_nutzer auf den Wert der externen Variablen gesetzt. Nicht mehr und nicht weniger. Das nutzen der externen Variablen (oder auch der Membervariablen) heisst nun nicht, dass wenn du irgendwo ind Form1 nutzer änderst, dass AUTOMATISCH lbl_nutzer auch diesen neuen Wert hat. Der neue Wert ist zwar in Form2 in "extern nutzer" drin, aber das reinschieben in lbl_nutzer musst du selbst programmieren. -> bsp. durch eine public Memberfunktion in Form2, die den Namen setzt und die von Form1 immer dann aufgerufen wird, wenn der Name geändert wird.



  • Auaaa...



  • Mag sein, aber "Des Menschen Wille ist sein...."

    ihm wurden alle Alternative aufgezeigt. Man wächst ja mit den Aufgaben und lernt neues dazu.



  • Member schrieb:

    Auaaa...

    m0wl 😃 ich habe sowas noch NIE gemacht und jetzt haben wir ein "Projekt" in der Schule und das ist nur eines meiner Probleme^^ 🙄

    Dann mach ich mich mal auf die Suche nach Membervariablen...



  • Du bracuhst nicht suchen:

    Auf der Seite (Link von mir) werden BEIDE Methoden beschrieben



  • So gehts doch auch:

    void __fastcall Tfrm_kontroll::FormActivate(TObject *Sender)
    {
    lbl_nutzer->Caption=nutzer;
    }
    


  • Klar. Hat ja keiner gesagt, dass nicht mehrere Wege nach Rom führen. In deiner Lösung wird immer dann der Name aktualisiert, wenn das Fenster aktiv wird. Vielleicht tritt eine Situation ein, wo dein Fenster nicht aktiv wird, aber dennoch der Name erneuert werden soll.....


Anmelden zum Antworten