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