![]() |
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 |
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:
sonstige Fenster
FormX := TFormX.Create( nil );
try FormX .ShowModal; finally FormX .Free; end;
Delphi-Quellcode:
das wäre mein Vorschlag
if FormXY = nil then
FormX := TFormX.Create( nil ); |
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] |
Re: Programm mit 181 Fenstern
Zitat:
|
Re: Programm mit 181 Fenstern
Zitat:
|
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. |
Re: Programm mit 181 Fenstern
Zitat:
|
Re: Programm mit 181 Fenstern
Zitat:
Delphi-Quellcode:
einen alten Dialog zum Leben erweckt.
DialogBox(hInstance, MAKEINTRESOURCE(100), 0, @dlgfunc);
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 |
Re: Programm mit 181 Fenstern
Zitat:
|
Re: Programm mit 181 Fenstern
Zitat:
Delphi-Quellcode:
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:
procedure Tfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin Action := caFree; end; |
Re: Programm mit 181 Fenstern
Zitat:
Das neu Erzeugen und Füllen der Unterfenster vermeidet auch Speicherprobleme: Fenster erzeugen, Daten übergeben, Daten einsammeln, freigeben ist einfach übersichtlicher. Ich hab' hier eine Anwendung, die bestand ürsprünglich aus 26 Forms, die Daten wurden jeweils global vorgehalten. Jetzt habe ich noch vier Forms, was außer dem Hauptfenster mit Hauptmenü ein About- ein Help- und das Fenster für die eigentlichen Berechnungen sind. Grüße, Messie |
Re: Programm mit 181 Fenstern
Zitat:
|
Re: Programm mit 181 Fenstern
Bei den 181 Dialogen kann ich mir kaum vorstellen, daß für jede einzelne Einstellung des Programms ein eigener Dialog benutzt wird.
Irgendwo muß der Kram auch *zentral* gespeichert werden, noch dazu, wenn sich die Einstellungen gegenseitig beeinflussen (wie Du schrubst). Diese zentrale Datei, in der diese Einstellungen gespeichert werden, würde ich mir als erstes vorknöpfen: - welche Dialoge lesen davon Daten (nur) aus - Welche Dialoge speichern darin (nur) Daten - welche Dialoge ändern lesend und speichernd Daten? Mein erster Ansatz ginge so in die Richtung einer Unit mit globalen Definitionen/Funktionen/Variablen für alle "Dialoge". Zeig doch vielleicht mal eines dieser alten Dialogfenster (Source mit Screenshot). Vielleicht hülft's ;-) |
Re: Programm mit 181 Fenstern
Zitat:
Zitat:
Viele Grüße, Helmut |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 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