Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   Form zur Laufzeit erzeugen (https://www.delphipraxis.net/153873-form-zur-laufzeit-erzeugen.html)

Bernhard Geyer 18. Aug 2010 16:27

AW: Form zur Laufzeit erzeugen
 
Zitat:

Zitat von hanspeter (Beitrag 1043128)
Zumindest bis W2000 gab es bei einer Unmenge an Fenstern ein Window - Resourcenproblem.

Gibts es auch unter XP/Vista/Win7. Die Grenzen sind nur "etwas" weiter nach hinten verschoben.

Also das vorgehen alles beim Programmstart zu erzeugen halte ich für blödsinn. Wir gehen eigentlich auch immer her alle von Delphi erzeugten globalen Formularvariablen gleich aus dem Quellcode wieder zu löschen um hier keine Probleme damit zu haben versehentlich ab und zu dieses Variable zu verwenden auch wenn man in einer ganz anderen Instanz ist.

Hansa 18. Aug 2010 18:20

AW: Form zur Laufzeit erzeugen
 
Ich sehe das ähnlich : Vorgehensweise ist nicht gerade hilfreich. Auch die "Gurus" kochen nur mit Wasser. Werden 50 Forms oder mehr permanent im Speicher gehalten, Variablen verändert etc., dann ist das Programm in einem gewissen Zustand, der ohne allergrösste Vorsicht nicht als sicher bezeichnet werden kann.

Es wäre also eine gewisse Vorsichtsmassnahme, die Forms immer wegzumachen und bei Bedarf neu zu createn. Inkl. Initialisierungen usw. Der Speicherplatzbedarf spielt da nicht mal die grosse Rolle, die Logik aber schon.

xZise 18. Aug 2010 19:16

AW: Form zur Laufzeit erzeugen
 
Moin,
ich sehe den Vorteil bei der dynamischen Erstellung daran, dass es automatisch vergisst nach dem Freigeben.

MfG
Fabian

Hansa 18. Aug 2010 19:21

AW: Form zur Laufzeit erzeugen
 
Was soll was vergessen ? :shock:

wicht 18. Aug 2010 19:35

AW: Form zur Laufzeit erzeugen
 
Zitat:

Zitat von Hansa (Beitrag 1043165)
Variablen verändert etc., dann ist das Programm in einem gewissen Zustand, der ohne allergrösste Vorsicht nicht als sicher bezeichnet werden kann.

Das sehe ich auch als größtes Argument dagegen an. Diese globalen Formular-Variablen sind gefährlich und ausserdem führt das bei Anfängern zu einem schlechtem Stil. Bei 50 Fenstern hört sich das gar nicht gut an, wenn ich da irgendetwas zu sagen hätte würde ich versuchen, es dieser Person auszutreiben, wenn da an meinem Quelltext rumgefuchtelt wird :stupid:
Gibt meiner Meinung nach keine Vorteile, deshalb lieber gleich richtig machen und auf saubere Strukturen setzen, ist auch irgendwie mehr OOP finde ich.

Hansa 18. Aug 2010 19:52

AW: Form zur Laufzeit erzeugen
 
Zitat:

Zitat von wicht (Beitrag 1043179)
...Diese globalen Formular-Variablen sind gefährlich...

Deshalb ja meine Meinung : es gilt, zumindest die Gefahr etwas zu entschärfen. Läuft ein Programm von 8:00 bis 20:00 dann könnte das eng werden. Eventuell wird da immer einunddieselbe Form immer geöffnet und geschlossen. Im FormShow/FormClose für Ordnung zu sorgen, das ist ja schön. Allerdings : mit Vriablen meine ich jetzt nicht nur integer. Wenn z.B. eine TStringlist gebraucht wird, dann muss die erzeugt werden. Nach meiner Erfahrung ist es da besser, notfalls einen Runtime-Error zu provozieren, um ihn dann zu beseitigen, anstatt Wochen/Monate zu warten, um die gewisse Stelle dann nach Reklamation lokalisieren zu müssen.

himitsu 18. Aug 2010 20:00

AW: Form zur Laufzeit erzeugen
 
Nja, für alle, welche ihre Daten in der GUI halten, ist sowas nunmal ein gängiger Weg, wenn alles immer existiert, da sonst ja die Daten verschwinden würden. :stupid:

hanspeter 18. Aug 2010 20:03

AW: Form zur Laufzeit erzeugen
 
Meine bisherige Praxis sah eigentlich in Kurzform so aus.

Delphi-Quellcode:
With TWorkform.Create(nil) do
begin
  Init(Parameterliste);
  Showmodal;
  Free;
end;
In der Initroutine werden Comboboxen, Listen u.s.w. initialisiert.
Dieser Teil ist jetzt in das Formcreate bei Programmstart gewandert.
Das sollte , gerade in Client-Server Systemen, den Effekt haben, das bei Datenänderungen ein Neustart des Programmes notwendig ist.
Mit dem obigen Aufruf würde ein schließen und wieder öffnen des Fensters ausreichen.

Gruß

himitsu 18. Aug 2010 20:39

AW: Form zur Laufzeit erzeugen
 
Wenn, dann bitte so:
Delphi-Quellcode:
with TWorkform.Create(Parameterliste) do
  try
    ShowModal;
  finally
    Free;
  end;

Chemiker 19. Aug 2010 00:06

AW: Form zur Laufzeit erzeugen
 
Hallo,

ich bevorzuge eigentlich die Variante, dass sich das Form selber erstellt und auch selber wieder freigibt. Finde hat den Vorteil das der Aufruf immer gleich ist und die Änderungen sich nur an einer Stelle befinden.

Bis bald Chemiker


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

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