无法在设计器中打开带有框架的表单



我有一个框架:

TfrmMyFrame = class(TFrame)
  ...
end;

它放在我的主表格上,如下所示:

interface
uses Myframe;
type
  TfrmMyMainForm = class(TForm)
    FmyFrm: TfrmMyFrame;
    ...
  end;

在设计时,我无法打开主窗体,除非我在设计器中打开框架。我总是必须先打开框架窗体,然后才能打开主窗体。请注意,我只是在谈论设计时间。这是正确的行为吗?如果没有,我该如何纠正它?我正在使用 XE5。

框架必须包含在项目中,设计人员才能将它们添加到窗体中或在窗体上显示它们。它们仍然可以在运行时动态添加到窗体中。

如果您检查表单的 dfm,您会注意到使用单词 inline 添加的框架。这由 VCL 组件流式处理系统转换为枚举值TComponentState.csInline,用于指示组件是可以嵌入到窗体中的顶级容器。

窗体设计器使用与运行时相同的组件流系统。我的猜测是它只解析当前加载到 IDE 内部缓存中的表单和框架。这将解释为什么如果您先打开框架,则可以打开窗体。通过将框架添加到项目中,当在 IDE 中打开项目时,该框架将加载到缓存中。

有趣的事实

IDE扩展程序员使用了一个技巧来设计继承自TDockForm的表单,这是一个开放工具API 仅在预编译二进制包中提供的组件(否 源,没有DFM(。通过在假人中实现TDockForm 与后代属于同一项目组的项目 IDE可能会被愚弄加载假货。这个技巧依赖于相同的 您偶然发现的行为。

相关内容

  • 没有找到相关文章

最新更新