Voglio creare un modulo dato il suo nome di classe come una stringa, which has been asked about before, ma invece di chiamare GetClass
, voglio utilizzare la nuova funzione RTTI di Delphi.Come creare un'istanza di una classe dal suo TRttiType?
Con questo codice, ho uno TRttiType
, ma non so come istanziarlo.
var
f:TFormBase;
ctx:TRttiContext;
lType:TRttiType;
begin
ctx := TRttiContext.Create;
for lType in ctx.GetTypes do
begin
if lType.Name = 'TFormFormulirPendaftaran' then
begin
//how to instantiate lType here?
Break;
end;
end;
end;
Ho anche provato lType.NewInstance
senza fortuna.
Dopo aver istanziato l'oggetto Form, non è più necessario utilizzare RTTI per chiamare il suo metodo 'Show()'. Chiamalo normalmente: 'f.Show;' –
@RemyLebeau, su questo esempio f è un TValue, ovviamente l'OP può introdurre una variabile helper di TForm o semplicemente lanciare il TValue su un Tform come in questo modo 'TForm (f.AsObject) .Show; ' – RRUZ
Scusa, non ho notato che' f' era un 'TValue', stavo guardando il codice di Niyoko quando l'ho visto. –