![]() |
TForm1.FormCreate -> Form2.Show;
Ich hoffe mal, dass das hier die richtige Kategorie ist...
Warum geht das hier nicht? ^^ Unit1:
Delphi-Quellcode:
Ich bekomme eine Fehlermeldung; Programm wird nicht compiliert und folgende Zeile wird als falsch gekenzeichnet:
procedure TForm1.FormCreate(Sender: TObject);
begin Form2.Show; end; Project1:
Delphi-Quellcode:
Warum geht das nicht, wenn ich das Form2.Show; nach dem erstellen der Form1 per Button aufrufe, gibt es keine Probleme?
Application.CreateForm(TForm2, Form2);
Wie realisier ich es aber, dass beide Formen gleichzeitig beim Starten des Programms aufgerufen werden? Vielen Dank, schonmal im Vorraus! |
Re: TForm1.FormCreate -> Form2.Show;
Delphi-Quellcode:
das müsstest du eigendlich nehmen können!
procedure TForm1.FormShow(Sender: TObject);
begin Form2.Show; end; |
Re: TForm1.FormCreate -> Form2.Show;
Das Problem ist wahrscheinlich, dass Form2 nach Form2 kreirt wird. Wenn du also im onCreate von Form1 Form2 anzeigen willst, gibt es Form2 noch nicht. Du könntest einen Timer nehmen, ist zwar nicht so schön geht aber.
|
Re: TForm1.FormCreate -> Form2.Show;
Zitat:
Ich finde die Lösung mit dem Timer auch nicht so schön, denn ich kann ja keine 'Zeit' festlegen, da nciht auf jedem Pc gleich schnell die Forms erstellt sind. Gibt es keine elegantere Lösung? Aber danke für die schnelle Antwort! :) |
Re: TForm1.FormCreate -> Form2.Show;
Zitat:
|
Re: TForm1.FormCreate -> Form2.Show;
Zitat:
|
Re: TForm1.FormCreate -> Form2.Show;
sicher, dass es nicht während der laufzeit ist? beim kompilieren kann das ja eigentlich gar nicht sein...
sag mal kompilerfehlermeldung |
Re: TForm1.FormCreate -> Form2.Show;
Hallo,
wenn die Zeile mit
Delphi-Quellcode:
angemeckert wird, dann schau mal in der Projektverwaltung nach, ob die Unit, die das Form2 enthält, in das Projekt eingebunden ist. Wenn nicht, kann das diese Fehlermeldung hervorrufen.
Application.CreateForm(Tform2, Form2)
Ciao, sepp001 |
Re: TForm1.FormCreate -> Form2.Show;
@mumu: nein, es stimmt doch: Der Fehler kommt _nach_ dem Compilieren.
@sepp001: Die Unit von Form2 wurde mit der Unit von Form1 assoziiert. Ja. Ich denke mal SleepyMaster hat Recht, und mit einem Timer funktioniert es gut, da man den Intervall ja auf 1 setzen kann, da er auch erst erstellt wird, wenn die Form erstellt wird :). |
Re: TForm1.FormCreate -> Form2.Show;
du könntest auch einfach in das Create von Form2 das show, reinschreiben (bzw. visible eigenschaft setzen) oder du fügst in der Projectdatei hinter
Delphi-Quellcode:
noch
Application.CreateForm(Tform2, Form2)
Delphi-Quellcode:
ein
Form2.Show;
|
Re: TForm1.FormCreate -> Form2.Show;
Vertausch doch einfach die Application.CreateForm-Befehle, so dass zuerst Form2 erstellt wird und dann Form1.
Dann wird auch automatisch Form2 beim Programmstart angezeigt. Allerdings wird das Programm auch beendet wenn Form2 geschlossen wird. |
Re: TForm1.FormCreate -> Form2.Show;
Oder
Delphi-Quellcode:
aus der projektdatei rausnehmen und
Application.CreateForm(Tform2, Form2);
Delphi-Quellcode:
benutzen.
procedure TForm1.FormCreate(Sender: TObject);
begin Form2 := TForm2.Create(self); Form2.Show; end; Sollte eigentlich auch funktionieren. |
Re: TForm1.FormCreate -> Form2.Show;
Oder
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin Show; end; |
Re: TForm1.FormCreate -> Form2.Show;
Vielen dank für die schnelle und kompetente Hilfe. Ich denke die letzte Möglichkeit werde ich verwenden, da es so sein soll, dass das Programm halt nur beendet werden soll, wenn Form1 beendet werden soll.
Ansonsten, also, wenn das nicht geht, werde cih wohl auf die timer zurückgreifen. Danke. edit: @SleepyMaster: Tut mir leid, dich habe ich ganz übersehen :/. Also, da mit die Timer-Variante doch nicht mehr gefällt. Deins geht auch nicht. Dieselbe Fehlermeldung:
Delphi-Quellcode:
Fehler:
procedure TfrmMain.FormShow(Sender: TObject);
begin frmObjTreeView.Show; end; Project mdc.exe raised exception class EAccsessViolation with Message 'Access violation at address 00445BEA in module 'mdc.exe'. Read of address 000002F4'. Process stopped. Use Step or Run to continue. |OK| |HELP| |
Re: TForm1.FormCreate -> Form2.Show;
Zitat:
Aenogym |
Re: TForm1.FormCreate -> Form2.Show;
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 :/. |
Re: TForm1.FormCreate -> Form2.Show;
Weiß niemand eine Antwort *sry wegen des Doppelposts* :/
|
Re: TForm1.FormCreate -> Form2.Show;
Zitat:
Wenn Du sie auch noch alle anzeigen willst, rufe das entsprechende FormX.Show in der Projektdatei nach dem CreateForm auf. Gruß, teebee |
Re: TForm1.FormCreate -> Form2.Show;
Hi,
Zitat:
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:
Wie man sehen kann, werden zuerst die Forms erstellt, dann Application.Run aufgerufen.
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. 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:
auch keine AccessViolation mehr auftreten. Die tritt nämlich 'nur' auf, wenn Du Form2.Show aufrufst, bevor der Form2 estellt wurde.
procedure TForm1.FormShow(Sender: TObject);
begin Form2.Show; end; Hab das bei mir (Delphi 7 Pro) noch mal kurz getestet und es funktioniert einwandfrei. MfG, Lutz |
Re: TForm1.FormCreate -> Form2.Show;
Vielen Dank. Funktioniert Einwandfrei :).
|
Re: TForm1.FormCreate -> Form2.Show;
Mit
Delphi-Quellcode:
dürfte es auch gehen.
Form1.OnActivate(Sender: TObject);
begin Form2.Show; end; Gruß DelphiFreund |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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