unit uReturn_TObject; interface uses Forms, Controls, SysUtils, Rtti, Generics.collections; Type TReturn_TObject = class class function Instanciar:T; class procedure InstanciarForms(Owner:TWinControl); end; implementation uses typInfo; { TReturn_TObject } class function TReturn_TObject.Instanciar: T; var valor: TValue; ctx: TRttiContext; tipo: TRttiType; tipoInstancia: TRttiInstanceType; begin tipo := ctx.GetType(TypeInfo(T)); tipoInstancia:= (Ctx.FindType(Tipo.QualifiedName) as TRttiInstanceType); Valor:=Tipoinstancia.MetaclassType.Create; Result := valor.AsType; end; class procedure TReturn_TObject.InstanciarForms(Owner: TWinControl); var Form:TForm; valor: TValue; ctx: TRttiContext; tipo: TRttiType; tipoInstancia: TRttiInstanceType; begin tipo := ctx.GetType(TypeInfo(T)); tipoInstancia:= (Ctx.FindType(Tipo.QualifiedName) as TRttiInstanceType); Valor:=Tipoinstancia.MetaclassType.Create; form := Tform(valor.AsType).Create(Owner); Form.ShowModal; Form.Free; end; { TReturn_TObjecStringt } end.