Yo las creo a partir del nombre de un TAction que tenga el mismo nombre de la forma que voy a crear. Todos los action les asigno el mismo evento OnExecute
Código:
procedure TfrmMenu.actAbrirVentanaExecute(Sender: TObject);
begin
CrearVentana(TAction(Sender).Name).Show
end;
function TfrmMenu.CrearVentana(sForma: string): TForm;
begin
sForma:= StringReplace(sForma, 'act', 'Tfrm', []);
Result:= TFormClass(GetClass(sForma)).Create(Self)
end;
Nomas que necesitas agregar a cada forma al final algo así
Código:
initialization
RegisterClass(TfrmNombreForma)