delphi - 从框架代码中获取表单类

时间:2013-03-20 12:06:29

标签: delphi delphi-xe

如何从框架代码中获取框架所有者形式的classtype,并将该类型转换为TFormClass? 我知道我需要注册表单类,所以我可以使用GetClass来获取它,但是我遇到了问题。

1 个答案:

答案 0 :(得分:7)

主机表单的类类型如下所示:

HostFormClassType := TFormClass(GetParentForm(Self).ClassType);

在我写Self时,我认为这是你的框架。虽然你说“所有者”,但我怀疑你真正的意思是框架所在的形式。这通常与框架的拥有者相同,但并非总是如此。

无需注册任何内容或致电GetClass

唯一的轻微皱纹是GetParentForm可能会返回TCustomForm而不是TForm派生的内容。因此,上述代码中的强制转换可能不正确。您可以通过包含运行时测试来处理它。

var
  ClassType: TClass;
....
ClassType := GetParentForm(Self).ClassType;
Assert(ClassType.InheritsFrom(TForm));
HostFormClassType := TFormClass(ClassType);