Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [D7]MDI-Anwendung: Zuweisungen auf Public Var des MDIChilds (https://www.delphipraxis.net/56649-%5Bd7%5Dmdi-anwendung-zuweisungen-auf-public-var-des-mdichilds.html)

TUX_der_Pinguin 9. Nov 2005 10:32


[D7]MDI-Anwendung: Zuweisungen auf Public Var des MDIChilds
 
Hi,

ich habe eine MDI Anwenung, mit einem Hauptformular und einem MDIChild.
So jetzt habe ich in der public Deklaration des MDIChild eine Variable
deklariert. ( MDI_Parent : tfrmMDIForm).

So wenn ich jetzt im Hauptprogramm ein MDIChild erstellt wird, wie folgt:

MDIChild := tfrmMDIChild.Create(Self);
MDIChild.MDI_Parent := Self;

Und ich dann in dem MDIChild.OnActivate auf den Titel des Hauptformulars
zugreifen will:

ShowMessage(MDI_Parent.Caption) dann ist die Ausgabe leer.

Erstelle ich z.b. einen Button der o.g. Code ausführt wird mir der
Titel des Hauptformulars ausgegeben.


Jetzt meine Frage wieso ist das so !?

Ich nehme doch an wenn ich MDIChild := tfrmMDIChild.Create(Self) sage das dann das Formular erstellt wird und wenn ich MDIChild.MDI_Parent := Self. ausführe, gehe ich davon aus das die angabe auch sofort verfügbar ist, aber dem ist leider nicht so.

Jemand eine Idee wie man das Verhalten ändern kann bzw. es mir einfach
mal erklären, damit ich versteh wieso es so ist wie es ist.


mfg

TUX

Flocke 9. Nov 2005 11:44

Re: [D7]MDI-Anwendung: Zuweisungen auf Public Var des MDIChi
 
Ich denke mal, OnActivate wird aufgerufen bevor tfrmMDIChild.Create(Self) zurückkehrt - und da ist die Eigenschaft noch nicht gesetzt. Kannst du nicht die Eigenschaft Parent direkt benutzen?

TUX_der_Pinguin 9. Nov 2005 13:43

Re: [D7]MDI-Anwendung: Zuweisungen auf Public Var des MDIChi
 
Hi,

also dein Vorschlag mit der 'Parent' Eigenschaft des MDIChilds geht
wohl auch, habs noch nicht getestet. Aber das Verhalten was mir
aufgefallen war, betrifft auch irgendwelche Daten die ich übergeben will.

So wie es aussieht sind die Information in den Variabeln erst da
wenn folgende Ereignisse durchlaufen sind:

1. OnCreate
2. OnShow
3. OnActive
4. OnPaint

D.h. in den Ereigenissen kann noch nicht auf die übergebenen Informationen zugegriffen werden.

mfg

TUX


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz