【问题标题】:Missing UI Control on tab, why calling HandleNeeded fixes it?选项卡上缺少 UI 控件,为什么调用 HandleNeeded 修复它?
【发布时间】:2010-01-15 07:34:41
【问题描述】:

我有一个 UI 对象附加到一个选项卡上,该对象仅在与程序交互的特定序列下才会丢失,如果它丢失,关闭程序将导致 AV 和 Invalid Window Handle 错误。 当我试图找出原因时,我发现在开始时调用它的 .Handle 或 .HandleNeeded 可以解决问题。但这并不能解释为什么它可以解决问题。

所以我希望知道这很常见吗?有没有人遇到过这个奇怪的错误?知道原因吗?

【问题讨论】:

  • 这似乎信息太少,无法回答。您至少应该提供 Delphi 版本和一些代码。

标签: delphi


【解决方案1】:

如果您使用 TabControl,Delphi 只会在需要页面时为每个页面创建控件(出于速度和资源使用原因)。尝试访问尚未显示的页面上的控件会导致问题,除非您调用 .HandleNeeded。对 .HandleNeeded 的调用告诉 Delphi 您现在需要句柄,并消除了问题。

这不是错误,顺便说一句。正如我上面提到的,这是一个有意的设计决策,目的是为了提高速度并最大限度地减少资源使用。

【讨论】:

    【解决方案2】:

    如果控件是在运行时创建的:确保设置了组件的父级和所有者!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      相关资源
      最近更新 更多