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 Fenster nach Programmstart öffnen? (https://www.delphipraxis.net/59402-fenster-nach-programmstart-oeffnen.html)

MCXSC 21. Dez 2005 21:34


Fenster nach Programmstart öffnen?
 
Hallo,


Hab ein kleines Problem:

Wie kann ich ein zweites Formular im OnCreate-Ereignis des Hauptformular öffnen? Bei mir kommt da immer eine Fehlermeldung.

Folgenden Code verwende ich:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
form2.showmodal;
end;
Und folgende Fehlermeldung erscheint immer:

Zitat:

Im Project projektname.exe ist eine Execption der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00AAD103 in Modul 'projektname.exe' [...]
Kann mir jemand helfen?

MCXSC

Luckie 21. Dez 2005 21:37

Re: Fenster nach Programmstart öffnen?
 
Bitte erstell für jede Frage einen sepaaraten Thread, sonst geht hier alles durcheinander. Danke.

Matze 21. Dez 2005 22:08

Re: Fenster nach Programmstart öffnen?
 
Und zusätzlich solltest du immer Quellcode angeben, den du schon hast, die Fehlermeldung sowieso und auch die Zeile, in der ein Fehler auftritt etc. Damit verhinderst du unnötiges Nachfragen.

Sharky 22. Dez 2005 06:34

Re: Fenster nach Programmstart öffnen?
 
Zitat:

Zitat von MCXSC
... Wie kann ich ein zweites Formular im OnCreate-Ereignis des Hauptformular öffnen? Bei mir kommt da immer eine Fehlermeldung.

Hai MCXSC,

das Fehler kommt weil zu dem Zeitpunkt wo Du Form2.ShowModal aufrufst dein Instanz von TForm2 noch nicht erzeugt wurde.
In deiner Projekt.dpr werden die Forms der reihe nach erzeugt. Da Du aber auf das .OnCreate der TForm1 reagierst ist deine Instanz von TForm2 natürlich noch nicht erzeugt

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1); // Form1 wird erzeugt und das OnCreate von Form1 wird aufgerufen.
  Application.CreateForm(TForm2, Form2); // Erst DANACH wird Form2 erzeugt.
  Application.Run;
end.
Am einfachsten kannst Du das umgehen in dem Du deinen Code nicht in das OnCreate schreibst sondern in das OnActivate der Form
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin
  Form2.ShowModal;
end;

DevilsCamp 22. Dez 2005 07:07

Re: Fenster nach Programmstart öffnen?
 
oder Du nimmst Form2 aus der Liste der automatisch erzeugten Forms und nutzt folgenden Code:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
form2.showmodal;
Form2.Free;
end;

MCXSC 6. Jul 2007 21:15

Re: Fenster nach Programmstart öffnen?
 
Ich muss, auch wenn es schon lange her ist, nochmal was zum gleichen Thema (deswegen kein neuer Thread, da es eigentlich die gleiche Frage ist, nachfragen:

Wie ist es denn möglich, einen MessageDlg im OnCreate Ereignis von Form1 zu öffnen? Da bekomme ich nämlich ebenso eine Fehlermeldung...

Luckie 6. Jul 2007 21:28

Re: Fenster nach Programmstart öffnen?
 
Da könnte dir die VCL einen Streich spielen. Wie ist es denn mit einer MessageBox?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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