Zitat:
Delphi-Quellcode:
Application.CreateForm(TForm1, Form1); Myforms.items.add('Form1');
Application.CreateForm(TForm2, Form2); Myforms.items.add('Form2');
...
Wem fällt da was auf?
Ganz viel doppelter Code.
* Man kann CreateForm und Items.Add in eine Funktion auslagern und den Namen aus Form.Name verwenden. (kein eventueller Copy&Paste-Fehler beim Namen)
* man kann die "Registrierung" auch im Constructor/OnCreate der Forms erledigen, bzw. in einem gemeinsamen Vorfahren seiner Forms.
Da in myforms nicht der Name, sondern die Instanz beötigt wird, warum ist das keine TObjectList oder bei einer StringList kann man auch zusätzlich das Objekt speichern.
Wobei ich bei StringList.AddObject auch direkt an ein TDictionary<string,TForm> denken würde.
Und da es in Screen.Forms bereits eine Liste "aller"
VCL-Forms gibt, warum nicht diese Liste benutzen?
Das GetComponentCaptions nutzt nichts von der Form, also warum ist das dann keine
Class Procedure
?
TComponent.Name oder TForm(string) .... ja, die richtigen Typen sollte man immer verwenden.
Casten wen nötig, aber wenn man castet, dann auch nur zwischen kompatiblen Typen.