Vielleicht sollte man erstmal die Motivation klären, also die Frage nach dem Warum?
Ein so großes und über die Jahre gewachsenes Projekt stellt man ja nicht aus Spaß um.
Sowas bezahlt ja kein Kunde bzw. es hat kein konkreten Kundennutzen.
@hgf: Was ist deine Hauptmotivation? Was willst du konkret erreichen? Was soll verbessert werden?
Ich könnte mir vorstellen, das dein Hauptanliegen ist, dass beim Programmstart in der
DPR nicht immer alle Formulare erzeugt werden.
Das entwickeln eines Form-Managers und das anmelden/registrieren der Formulare darin kann ich mir ja noch relativ simpel vorstellen.
Schwieriger wird es dann, den restlichen Quelltext daran anzupassen. Auch aufgrund der Menge der zu bearbeitenden Units.
Ohne vernünftige automatisierte Verarbeitung durch geschicktes Suchen & Ersetzen/RegEx/Grep/WasAuchImmer wird es zu zeitaufwendig.
Ein bisschen hakelig wird es dann bei dem von dir angesprochenen umändern der Formvariablen zu Funktionen, die aus einem Container (im Form-Manager), dir die richtige Instanz erzeugt und zurück liefert.
Hier kommt das von Redeemer angesprochene Problem mit dem Identifikator zum tragen.
In einer ersten Iteration würde ich vorschlagen, nicht den Formularnamen zu wählen, sondern den Classtype als Schlüssel für ein TObjectDictionary zu verwenden.