Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Programm mit 181 Fenstern (https://www.delphipraxis.net/117780-programm-mit-181-fenstern.html)

HHick123 24. Jul 2008 20:33


Programm mit 181 Fenstern
 
Hallo Leute, ich schon wieder (Danke für die bisherige Hilfe)...

Also ich bin gerade dabei ein GUI von BP7.0 auf Delphi 2006 zu portieren.
Die Forms sind in RES-Dateien drinnen, die ich bereits in RC-Dateien konvertiert habe. Mittels grep hab' ich dann die Anzahl der Dialogfenster gezählt. Es sind 181 (jedes reich bestückt mit Buttons, Comboboxes, Edits, etc..).

Jetzt sind mir Zweifel gekommen, ob' 181 Form-Units (aufgrund der Anzahl)eigentlich akzeptabel sind... Geht das überhaupt?
Oder soll ich die Fenster besser dynamisch erzeugen?

Viele Grüße,
Helmut

Semmel 24. Jul 2008 20:48

Re: Programm mit 181 Fenstern
 
Du wirst sicher nicht alle Fenster immer brauchen außerdem ist die Ladezeit zu lange, ich erzeuge die meisten Fenster erst zur Laufzeit (sicher 80 % +)

Dialoge

Delphi-Quellcode:
 FormX := TFormX.Create( nil );
  try
    FormX .ShowModal;
  finally
    FormX .Free;
  end;
sonstige Fenster

Delphi-Quellcode:
 if FormXY = nil then
   FormX := TFormX.Create( nil );
das wäre mein Vorschlag

alzaimar 24. Jul 2008 20:58

Re: Programm mit 181 Fenstern
 
Ich mache es etwas diffiziler:
1. Dialogfenster (Kurz ne Frage oder irgendwie ein paar Datein eingeben): So wie Du.
2. Wichtige Fenster (Datenmodule, Hauptfenster): Mit Application.CreateForm.

Die Hauptanwendung initialisiert maximal das Datenmodul und das Hauptfenster. Wenn ich allerdings eine etwas komplexere Datenbankverbindung habe, dann instantiiere ich das Haupt-Datenmodul vom Hauptfenster aus. Beispielsweise, wenn das Datenmodul Threads startet.

[edit]Von Sir Thornberry monierten Quatsch gestrichen[/edit]

SirThornberry 24. Jul 2008 21:06

Re: Programm mit 181 Fenstern
 
Zitat:

Zitat von alzaimar
So wird aber leider FormCreate nicht aufgerufen

Wie kommst du darauf? Bei mir geht das und ich wüsste auch keinen Grund warum es nicht funktionieren sollte.

omata 25. Jul 2008 01:06

Re: Programm mit 181 Fenstern
 
Zitat:

Zitat von Semmel
Delphi-Quellcode:
 
FormX := TFormX.Create(nil);
try
  FormX.ShowModal;
finally
  FormX.Free;
end;

Fenster werden nicht mit Free sondern mit Release freigegeben!

turboPASCAL 25. Jul 2008 02:41

Re: Programm mit 181 Fenstern
 
@HHick123,

verguck dich nicht so in den Resourcen. ;)
Analysiere lieber das eigentliche Programm anhand seines Ablaufes.

Leider kennen wir dein Programm nicht und können deswegen auch keine
exakte Aussage treffen.

alzaimar 25. Jul 2008 06:51

Re: Programm mit 181 Fenstern
 
Zitat:

Zitat von SirThornberry
Zitat:

Zitat von alzaimar
So wird aber leider FormCreate nicht aufgerufen

Wie kommst du darauf? Bei mir geht das und ich wüsste auch keinen Grund warum es nicht funktionieren sollte.

Weiss ich auch nicht. :oops: Ich streich das wech, verwirrt nur.

HHick123 25. Jul 2008 11:53

Re: Programm mit 181 Fenstern
 
Zitat:

verguck dich nicht so in den Resourcen.
Hmm, verlockend ist es ja schon ;-) Hab' gerade mit
Delphi-Quellcode:
DialogBox(hInstance, MAKEINTRESOURCE(100), 0, @dlgfunc);
einen alten Dialog zum Leben erweckt.

Aber besser würd' es mir schon gefallen, nur die Geometrie-Informationen aus den RES-Dateien zu verwenden und die Dialoge von TForm abzuleiten. Dazu müsste ich die RES-Dateien aber in DFM-Dateien umwandeln... Siehst Du da eine Chance? Oder einen anderen Weg? :gruebel:

Viele Grüße,
Helmut

HHick123 27. Jul 2008 10:24

Re: Programm mit 181 Fenstern
 
Zitat:

ich erzeuge die meisten Fenster erst zur Laufzeit
Ok, werd' ich auch so machen...

Hansa 27. Jul 2008 10:40

Re: Programm mit 181 Fenstern
 
Zitat:

Zitat von omata
Fenster werden nicht mit Free sondern mit Release freigegeben!

Weder, noch. :mrgreen:
Delphi-Quellcode:
procedure Tfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;
Und bei 181 Forms würde ich mir mal dringend die Funktionsweise der Form-Inheritance ansehen, oder soll diese Zeile 181mal überall von Hand eingefügt werden ? :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz