【问题标题】:Components added to TcxTabSheet are not displayed at runtime when TcxPageControl is hosted in a TFrame当 TcxPageControl 托管在 TFrame 中时,添加到 TcxTabSheet 的组件不会在运行时显示
【发布时间】:2014-11-19 02:08:45
【问题描述】:

我正在构建一个可重复使用的TFrame,其中包含一个TcxPageControl。想法是将框架拖放到表单上,然后我可以添加特定于该表单的页面。

这很好用,我可以通过设计器成功添加页面,并在运行时显示这些标签页。但是,问题是任何被放到TcxTabSheet 上的组件都不会。

如果我在框架本身上添加一个页面(即基本框架,而不是拖放到表单上的那个)并在其上放置组件,那些显示。但是,如果我将组件从表单中拖放到同一页面上,它们不会。

我显然在这里遗漏了一些东西,但我原以为页面控件可以像在任何形式上一样工作(不管它是否从 TFrame 浮出水面)但显然似乎有 一些东西 em> 不喜欢。

这是一个错误还是我做的不对?

注意 - 我正在使用“添加到调色板”选项将框架添加为组件,因为我想显示 TPageControl 属性(以防万一)

【问题讨论】:

  • 使用标准TPageControl会发生什么?
  • @LURD 奇怪的是,添加新页面控件的选项被禁用(通过设计器),因此我使用TcxPageControl。这种情况的另一个奇怪之处是,如果我在设计时将一个组件添加到TcxTabSheet,查看 DFM 文件 (Alt+12) 然后切换回来,该组件不再存在,但它仍然在表单中声明。当我保存时,系统会提示我删除它,因为它没有声明:S 在TFrame 上肯定出现了一些紧张的行为。
  • 在我们的应用程序中,我们在main form 中使用TcxPageControlTcxTabSheets 是在运行时创建的,并获得分配的 TFrame 后代。其中一些TFrame 有一个TcxPageControlTcxTabsheet 在设计时创建的组件。此架构完美无缺。我想手头肯定有别的东西。如果这很重要,我们正在使用 Delphi XE5devExpress 13.2.3
  • @GuillemVicens 我能够用TFrameTcxPageControl 重现此问题 - 我已将问题报告给 DevExpress 团队并提供了sample app,您可以尝试运行它你自己看看行为是否在你的构建上是一致的。仅供参考,我在 v14.1.4Delphi XE3
  • @James,我可以确认我的环境也发生了同样的情况。我猜这是因为 Delphi 将“原始”TFrame 编译到表单中,而忽略了 form 上的那个。不确定是否或如何解决,抱歉。

标签: delphi devexpress tframe tpagecontrol ttabsheet


【解决方案1】:

事实证明,这种行为实际上是 VCL 限制,而不是对 TcxPageControl 组件本身的限制。这里的不同之处在于 TcxPageControl 允许从 Frame 实例添加页面的能力有点误导。

一种解决方法是简单地从包含TcxPageControl(甚至只是标准TPageControl)的TFrame 实例继承并在其中添加页面。不理想,因为这意味着我有效地为每页创建了一个单独的TFrame,但至少这意味着我可以重用作为目标的通用代码。

Clarification from DevExpress.

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2011-03-07
    • 2010-12-25
    • 2011-05-22
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2012-03-05
    相关资源
    最近更新 更多