FireMonkey使用RTTI在运行时获取FMXObjects

时间:2016-10-23 22:00:35

标签: delphi rtti

我正在尝试获取(使用RTTI)我应用中的forms,以便根据表单runtimeName创建它们}。

我已经声明了{$TYPEINFO ON}编译器指令并编码:

 lRttiType := pRttiContext.FindType ('Forms.tForm');

但我收到nil结果。

'Forms.tForm'应为表格Name

任何帮助将不胜感激。

1 个答案:

答案 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