Nein, nicht ganz (ich hatte aber auch einen kleinen Fehler drin)
Erzeugt werden die Formulare so
Delphi-Quellcode:
uses
frmBaseItem;
procedure ShowItemForm( IDType, ItemID : integer );
begin
with TFBaseItemClass( FindClass( IntToStr( IDType ) ) ).Create( Application ) do
begin
ID := ItemID;
Show;
end;
end;
Mit FindClass kannst du nach einem Klassennamen (auch Alias, den wir benutzt haben) suchen lassen.
Der Rückgabewert von FindClass (logischerweise eine Class) wird per Cast auf die Basis TFBaseItemClass gebracht und erzeugt.
Der Vorteil ist nun, dass deine HauptAnwendung die Formulare gar nicht kennen muss, sondern nur das Basis-Formular.
Weiterhin kannst du auch erst prüfen, ob du eine Klasse zurückbekommen hast und dann erst erzeugen.
Wenn keine Klasse kommt, dann eben nichts machen
So kannst du die benötigten Formulare auch erst zu einem späteren Zeitpunkt coden und brauchst dich aber nicht um die Abhängigkeiten scheren.
Du kannst auch zunächst ein Dummy-Formular erstellen.
BTW Als ClassAlias "1" zu nehmen ist natürlich doof, besser wäre es natürlich "ItemType1", "ItemType2", etc.