Ti sei risposto da solo!
Basta creare una procedura a cui passare la classe del form da creare ed eventualmente una variabile in cui appoggiare il riferimento all'oggetto.
Un esempio:
codice:
procedure CreaForm(AFormClass: TFormClass; AFormReference: TForm);
begin
Application.CreateForm(AFormClass, AFormReference);
end;
Questa procedura prende come parametri una classe di form da creare e una variabile di tipo TForm in cui memorizzare il riferimento.
Un esempio di chiamata potrebbe essere il seguente:
codice:
procedure TForm1.Button1Click(Sender: TObject);
begin
CreaForm(TForm2, Form2);
end;
Ovviamente, se prevedi di creare più istanze della stessa form, puoi eliminare le variabili globali predefinite Form1, Form2, ecc. e usare una variabile privata che sia di tipo compatibile, oppure inserendo il riferimento alla form creata in una lista per mantenere tutti i riferimenti alle finestre aperte.
Spero di averti dato indicazioni utili.
Ciao!