Hi,
Zitat von
StanY:
Aber wie mache ich es, dass die anderen Formen/Forms auch erstellt werden, wenn ich frmMain erstelle, also, das Programm starte?
Einafch nur in Form2.FormCrate das reinschreiben geht nämlich net :/.
Zwei Möglichkeiten :
1) über das Menü Projekt/Optionen (frei aus dem Französischen übersetzt, hab keine deutsche Delphi-Version)
2) Manuell in der Projektdatei : (anzeigen durch Menü Projekt/Source anzeigen (wieder frei aus dem Französischen)). Die Projektdatei könnte dann wie folgt aussehen :
Delphi-Quellcode:
program test;
uses
Forms,
main in 'main.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Wie man sehen kann, werden zuerst die Forms erstellt, dann Application.Run aufgerufen.
Der Form.Show event des MainForms wird erst nach Application.Run aufgerufen, und zu dem Zeitpunkt ist Form2 schon erstellt.
Somit sollte bei einem :
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
Form2.Show;
end;
auch keine AccessViolation mehr auftreten. Die tritt nämlich 'nur' auf, wenn Du Form2.Show aufrufst, bevor der Form2 estellt wurde.
Hab das bei mir (Delphi 7 Pro) noch mal kurz getestet und es funktioniert einwandfrei.
MfG,
Lutz