che cosa devo fare è qualcosa di simile:Passando una classe come parametro di una procedura in Delphi XE
procedure A(type_of_form);
var form: TForm;
begin
form := type_of_form.Create(application);
form.showmodal;
freeandnil(form);
end;
Ho fatto questo per ogni forma creata in modo dinamico:
form1 := TForm1.Create(application);
form1.showmodal;
freeandnil(form1);
What i farà all'interno della procedura A è più complessa, ma il problema risiede in come rendere la creazione della forma un po 'generale. Forse qualcosa con l'operatore @ ... davvero non lo so.
Grazie per qualsiasi suggerimento!
'form.Free' sta bene lì. Vale la pena ricordare che questo funziona solo se il costruttore del form è un override del costruttore 'TForm'. –
@David, stai dicendo che questo non funzionerà se il costruttore è denominato Crea, con parametri di corrispondenza, se nasconde il costruttore discendente? –
@Marcus Questo è corretto. È necessario utilizzare i costruttori virtuali per ottenere l'istanziazione tramite riferimento di classe al lavoro. Altrimenti si finisce con un 'TMyForm' ogni volta, indipendentemente da ciò che è nel riferimento di classe. –