1

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

4

1 回答 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 回答