![]() |
Ereignisreihenfolge beim Anzeigen mehrerer Formulare
Normalerweise ist die Reihenfolge beim Programmstart beim Anzeigen eines Formulars:
Delphi-Quellcode:
Wenn das Programm aber mehrere Formulare besitzt, so werden diese in der Reihenfolge erzeugt, wie sie in der Project-Datei stehen:
OnCreate
OnShow OnPaint OnActivate OnResize
Delphi-Quellcode:
Nun meine Frage: Kann man absolut ausschließen, dass etwa das Ereignis Form1.OnShow VOR Form2.OnCreate auftritt? Oder anders ausgedrückt: Müssen zuerst alle Formulare erzeugt werden, bevor das Ereignis OnShow eines Formulars eintritt, oder kann das Ereignis OnShow eines Formulars eintreten, bevor ALLE annderen Formulare erzeugt wurden?
program MeinProgramm;
uses Forms, Main in 'Main.pas' {Form1}, Rain in 'Rain.pas' {Form2}, Pain in 'Pain.pas' {Form3}; {$R *.res} begin Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.Run; end. |
Re: Ereignisreihenfolge beim Anzeigen mehrerer Formulare
Diev mwißten Events (außer onCreate) werden erst ausgelöst, wenn die Eventsloop des Application-Objekts aktiv ist, also anch Application.Run. Deshalb ist es sichergestellet das alle Formulare erzeugt sind, bevor eine Form sichtbar wird.
|
Re: Ereignisreihenfolge beim Anzeigen mehrerer Formulare
das trifft nicht ganz zu. Ein Beispiel sind die Splashscreens. Oder wenn du vor Application.Run mit ShowModal ein Formular öffnest werden auch Messages abgearbeitet.
Ich würde versuche das ganze "sauberer" zu lösen und nicht darauf hoffen das niemals eine Message vorher abgearbeitet wird. |
Re: Ereignisreihenfolge beim Anzeigen mehrerer Formulare
Zitat:
|
Re: Ereignisreihenfolge beim Anzeigen mehrerer Formulare
Zuerst mal vielen Dank an alle für die Antworten!
Zitat:
Delphi-Quellcode:
program MeinProgramm;
uses Forms, MyUnit, Main in 'Main.pas' {Form1}, Rain in 'Rain.pas' {Form2}, Pain in 'Pain.pas' {Form3}; {$R *.res} begin DoThisBeforeEverythingElse; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.Run; end. |
Re: Ereignisreihenfolge beim Anzeigen mehrerer Formulare
Zitat:
|
Re: Ereignisreihenfolge beim Anzeigen mehrerer Formulare
Hi,
bin mir jetzt nicht ganz sicher, aber wäre hier nicht der Initialization Teil der Projektdatei, um etwas ganz zu Beginn des Projektes auszuführen?! :gruebel: Gruß |
Re: Ereignisreihenfolge beim Anzeigen mehrerer Formulare
Es kommt darauf an, was er machen will, ist der Code ein Teil einer Form, muß diese natürlich erst Instantiiert sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 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