我正在尝试获取(使用RTTI
)我应用中的forms
,以便根据表单runtime
在Name
创建它们}。
我已经声明了{$TYPEINFO ON}
编译器指令并编码:
lRttiType := pRttiContext.FindType ('Forms.tForm');
但我收到nil
结果。
'Forms.tForm'
应为表格Name
?
任何帮助将不胜感激。
答案 0 :(得分:2)
正如documentation所说:
Classes.TStrings
,它根据限定的类型名称查找类型信息。限定类型名称由两个组件组成:单元名称,由类型名称中的点字符分隔(例如,QualifiedName
)。
Firemonkey框架的TForm
的完整FMX.Forms.TForm
将为:QualifiedName
请注意,lRttiType := pRttiContext.FindType ('FMX.Forms.TForm'); // this finds the TRttiType
lRttiType := pRttiContext.FindType ('fmx.forms.TForm'); // this will return nil
区分大小写。
FMX.Forms.TForm
另请注意,TPersistent
是{$M+
后代,使用{$TYPEINFO ON}
}指令进行编译,该指令是TForm
的别名。因此,您不需要启用它来访问{{1}} RTTI