如何从框架代码中获取框架所有者表单的类类型,并将该类型转换为 TFormClass?我知道我需要注册表单类,所以我可以用GetClass得到它,但是我卡住了。
问问题
1467 次
1 回答
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);
于 2013-03-20T12:23:28.460 回答