Form1-public-Variable wird vom Konstruktor einer Form2-Instanz nicht aktualisiert (BDS2006)



  • Hallo Gemeinschaft,

    ich habe auf einem Form1 ein TStatusBar-Objekt mit mehreren TPanel, welche auf unterschiedliche Art und Weise aktualisiert werden. Einige sind vom Style her psOwnerDraw, andere sind psText.
    Ich erstelle im FormShow-Event des Form1 dynamisch eine Instanz eines weiteren Form2, wodurch eine public-AnsiString-Variable des Form1 vom Konstruktor der dynamisch erstellten Form2-Instanz aktualisiert wird.
    Diese Variable ist Bestandteil des Textes in einem der OwnerDraw-Panel der StatusBar auf Form1.
    Nach der Variablen-Aktualisierung durch den Konstruktor von Form2 rufe ich die Repaint()-Methode des StatusBar-Objektes auf, wodurch alle TPanel neu gezeichnet werden. Allerdings hat die Variable immernoch unverändert den Wert, mit dem sie in der Initialisierungsliste des Konstruktors von Form1 initialisiert wurde.
    Es sieht aus, als ob die angesprochene AnsiString-Variable garnicht aktualisiert wird. Wenn ich einen Haltepunkt im Form2-Konstruktor setze, wird die Form1-Variable aktualisiert (F8 um Zeile auszuführen)... Setze ich danach einen Haltepunkt ins OnDrawPanel der StatusBar und fahre mit F9 fort, steht in der Variable plötzlich wieder der Wert, mit dem die Variable einst initialisiert wurde!? 😕
    In C++Builder3 hat das ordnungsgemäß funktioniert... In BDS2006 leider nicht. 😞
    Hat jemand einen Hinweis für mich, was da schief laufen könnte?

    MfG

    Edit: Das Ganze funktioniert im Release-Build ebensowenig wie im Debug-Build. Zusätzlich kann ich noch sagen, dass das Ganze manuell (per Button-Click-Methode) funktioniert im Gegensatz zum FormShow. Wenn ich im ButtonClick Form2 instanziiere wird die public-Variable aus Form1 ordnungsgemäß vom Form2-Konstruktor aktualisiert!



  • Komische Geschichte. Zu Debug Zwecken kannst du ja eine set() Methode einbauen und im Debugger verfolgen, ob und wann sie aufgerufen wird.



  • Ich glaube das Problem hier hat direkt mit einem anderen Problem zu tun, zu dem ich gerade eine Thema eröffnet habe... also geht's einfach da weiter => private-bool-Variable wird falsch initialisiert


Anmelden zum Antworten