Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FormCreate für alle Forms beim Start aufrufen (https://www.delphipraxis.net/45660-formcreate-fuer-alle-forms-beim-start-aufrufen.html)

mumu 10. Mai 2005 10:03


FormCreate für alle Forms beim Start aufrufen
 
Ich habe ein ziemlich großes Projekt, bei dem beim Start alle Formulare erstellt werden. Welche Vorteile/Nachteile hat es, nur die MainForm beim Start zu erzeugen und die ganzen anderen Formulare erst beim aufruf und beim beenden wieder freizugeben.

gruß

Christian18 10. Mai 2005 10:11

Re: FormCreate für alle Forms beim Start aufrufen
 
Zitat:

Zitat von mumu
Ich habe ein ziemlich großes Projekt, bei dem beim Start alle Formulare erstellt werden. Welche Vorteile/Nachteile hat es, nur die MainForm beim Start zu erzeugen und die ganzen anderen Formulare erst beim aufruf und beim beenden wieder freizugeben.

gruß

Hallo,

wenn ich ein programm schreibe,dann mache ich das auch immer so. Also ich führe die anderen forms immer erst dann aus, wenn ich sie wirklich auch brauche. Ich finde, dass meine programm dadurch schnelle laufen.

MFG Christian18

Bernhard Geyer 10. Mai 2005 10:24

Re: FormCreate für alle Forms beim Start aufrufen
 
Zitat:

Zitat von mumu
Ich habe ein ziemlich großes Projekt, bei dem beim Start alle Formulare erstellt werden. Welche Vorteile/Nachteile hat es, nur die MainForm beim Start zu erzeugen und die ganzen anderen Formulare erst beim aufruf und beim beenden wieder freizugeben.

Vorteil Erstellen erst wenn nötig (und freigabe sobald als möglich):
- Schnellerer Start
- Geringerer Resourcenverbrauch (auch unter XP/2003 noch sinnvoll)

Hansa 10. Mai 2005 10:35

Re: FormCreate für alle Forms beim Start aufrufen
 
Viele machen das um angeblich Hauptspeicher zu sparen. Im Zeitalter von 1 GB RAM sehe ich darin aber keine wichtige Begründung, sich das Leben unnötig schwerer zu machen als nötig. Da aber auch ich die Forms erst zur Laufzeit erzeuge : Variable u.a. müssen initialisiert werden. Dies sollte dann geschehen, wenn die Foms erzeugt werden, also im OnCreate der Forms und somit auch beim Programmstart. Benutze ich nun die Forms und somit auch die Variablen, dann haben die einen Wert. Daran ändert auch ein Show/Hide nichts. An dieser Stelle müßte man dann die Variablen wieder neu initialisieren. Ergo : zwei Stellen mit fast demselben Code, also auch zwei Fehlerquellen, statt einer. Zusätzlich wird die EXE dadurch größer als sie sein müßte. Es gilt schließlich auch, Redundanzen zu vermeiden.

mumu 10. Mai 2005 12:05

Re: FormCreate für alle Forms beim Start aufrufen
 
oki, ich werd das denk ich mal umstellen. hab ich mir schon lang mal überlegt.

noch was dazu: würdet ihr dann gleich auch die global deklarierten form variablen rausnehmen? und ggfs. bei zugriff übergeben?!

Hansa 10. Mai 2005 12:20

Re: FormCreate für alle Forms beim Start aufrufen
 
Wie rausnehmen ? :shock: Es geht doch mit darum diese direkt beim Erzeugen zu initialisieren.

mumu 10. Mai 2005 17:51

Re: FormCreate für alle Forms beim Start aufrufen
 
naja egal.

noch was anderes dazu: wann soll ich denn dann das formular wieder freigeben? oder wird das automatisch beim schließen gemacht.

so erstelle ich das formular:

Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
begin
  Application.CreateForm(TForm, Form1);
  Form1.Show;
end;
ist das in ordnung?

Hansa 10. Mai 2005 18:01

Re: FormCreate für alle Forms beim Start aufrufen
 
Nene, lasse Application mal schön weg.

Delphi-Quellcode:

frm := TFrm.Create(self);


procedure Tfrm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

mumu 10. Mai 2005 18:04

Re: FormCreate für alle Forms beim Start aufrufen
 
okay!

aber was ist da der unterschied zwischen

frm := TFrm.Create(self);

und

Application.CreateForm(TForm, Form1);

Hansa 10. Mai 2005 18:13

Re: FormCreate für alle Forms beim Start aufrufen
 
Der Unterschied ist, daß Application eben unnötig ist. :mrgreen: Ich benutze das nur, um z.B. etwas in der Taskleiste anzeigen zu lassen, ein Icon zu setzen usw.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Seite 1 von 2  1 2      

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