我有 Jordan Russel 的 Toolbar2000 工具栏,我在运行时使用嵌入式 TFrame 创建并停靠在应用程序主窗体上。该框架有一个嵌入式窗格,该窗格又包含其他面板和各种控件。所以结构是:
TTBDock
TTBToolbar
TFrame (align=alNone, Autosize=true)
TPanel 1 (align=alNone, Autosize=true)
TPanel 2 (align=alTop ,Autosize = false)
TPanel 3 (align=alTop ,Autosize = false)
TPanel 4 (align=alTop , Autosize = false)
这个想法是面板 2、3、4 有明确的高度大小,然后框架(以及工具栏)会自动调整大小以适应新的大小。
它工作正常,除了工具栏第一次显示停靠在应用程序主窗体上时工具栏的大小错误。如果我在该点强制调整工具栏的大小(例如,通过单击鼠标再次显式调整 TPanel 高度的大小),它就会正确。我尝试调用例程来设置大小两次,调用 Update、Application.ProcessMessages、ReAlign - 除了让主窗体绘制然后再次手动执行调整大小之外,似乎没有任何效果。
如果我在调整大小例程结束时中断并检查面板大小和框架大小,它们是正确的,但工具栏大小不正确,所以第一次显示时,框架部分显示在大小错误的工具栏中。它是在另一个大小调整例程调用之后出现的,但只有在主窗体自己绘制之后。
我可以拼凑一些讨厌的东西,比如在计时器到期后显式调整面板的大小,但我宁愿从源头解决问题。
关于为什么这可能发生(或不发生)的任何想法?