... und noch zur generischen Liste:
Da kannst Du angeben, welche Objekte Du in die Liste schreiben willst und die Einträge dann später direkt verwenden.
Der Compiler kann dann davon ausgehen, dass nur Formulare in der Liste stehen und verhindert auch, dass etwas anderes (z.B. ein Panel) der Liste hinzugefügt wird.
Du kannst somit das "casten" der Einträge vermeiden.
Unter uses musst Du dafür Generics.Collections hinzufügen.
Für den Anfang würde ich es erst mal klassich machen.
Auf Generics umstellen kannst Du dann immer noch.
Delphi-Quellcode:
List: TObjectList<TForm>;
...
List := TObjectList<TForm>.Create;
...
for i:=0 to List.count - 1 do
List[i].label1.Caption := 'Form '+IntToStr(i);