【问题标题】:delphi - get form class from a frame codedelphi - 从框架代码中获取表单类
【发布时间】:2013-03-20 12:06:28
【问题描述】:

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

【问题讨论】:

  • 我不明白。 Owner.ClassType 不起作用?
  • @NGLN,所有者不一定是 TForm。

标签: delphi delphi-xe


【解决方案1】:

宿主窗体的类类型是这样获取的:

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

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

无需注册或致电GetClass

唯一的小问题是GetParentForm 可以返回从TCustomForm 派生的东西,而不是TForm。所以上面代码中的转换有可能是不正确的。您可以通过包含运行时测试来解决这个问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2010-10-29
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多