作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个表单,并将其类名作为字符串,which has been asked about before ,但我想使用 Delphi 的新 RTTI 功能,而不是调用 GetClass
。
通过这段代码,我得到了一个 TRttiType
,但我不知道如何实例化它。
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;
我也尝试过 lType.NewInstance
但没有成功。
最佳答案
您必须转换 TRttiType
到TRttiInstanceType
类,然后使用 GetMethod
调用构造函数功能。
尝试这个示例
var
ctx:TRttiContext;
lType:TRttiType;
t : TRttiInstanceType;
f : TValue;
begin
ctx := TRttiContext.Create;
lType:= ctx.FindType('UnitName.TFormFormulirPendaftaran');
if lType<>nil then
begin
t:=lType.AsInstance;
f:= t.GetMethod('Create').Invoke(t.MetaclassType,[nil]);
t.GetMethod('Show').Invoke(f,[]);
end;
end;
关于delphi - 如何从 TRttiType 实例化一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14742505/
我是一名优秀的程序员,十分优秀!