【发布时间】:2013-12-29 08:33:39
【问题描述】:
我有一个放置在表单上的框架。我希望在表单上放置该框架的多个实例。
它有一个带有 2 列的绘图网格,在 OnResize 事件中,我使第二列扩展到可用空间的末尾。这适用于手动调整窗体大小并将框架对齐设置为 alTop 的情况。但是当表单第一次出现时,即使 FrameResize 被调用,它也没有任何效果。 (虽然当我在它上面设置断点时它确实达到了预期的效果)。
所以,我现在正在做的是从表单 OnShow 处理程序中调用 FrameResize,但这很难看。框架应该能够在没有表单帮助的情况下正确显示。
有什么想法吗?我确实尝试过覆盖 SetParent,但这没有用。使用 Xe2。
TIA 标记
【问题讨论】:
-
它对我来说效果很好。我在表单上放置了一个带有 align=alNone 的 Frame 和一个带有 alRight 的 Frame。表单首先获得一个
WM_SIZE消息,该消息会在每个TFrame 上引发onResize事件。他们的TDrawGrids然后得到调整。一切顺利。您可以发布您的onResize事件处理程序代码吗? -
我创建了一个空框架和一个空表单,并将框架的一个实例添加到表单中。我为调用
Beep的框架实现了OnResize事件。当我运行该应用程序时,它会在启动时发出哔哔声。我认为我们需要一个 SSCCE。 -
感谢你们的努力,并教我 SSCCE 首字母缩写词。它可能是特定于版本的错误吗?我正在使用 XE2。既然我已经解决了,我需要继续做其他事情。
-
Mark:这在 XE2 中按预期工作。
-
Bruce:我在 tframe 中设置了 OnResize 事件。当我手动调整它所在的表单的大小并具有所需的效果时,它会被调用。在 Frame 的构造函数中,Align 属性似乎还没有产生效果,我的大小调整依赖于此。因此,即使在构造函数中调用 FormResize 也不正确。但是覆盖 SetBounds 就可以解决问题。
标签: delphi resize delphi-xe2 tframe