带底部对齐面板的TStatusBar

dav*_*vea 5 delphi alignment statusbar

我有一个带有a TStatusBar,底部对齐TPanel,底部对齐TSplitter且客户端对齐的表单TPanel,如下面的屏幕截图所示:

屏幕截图1  - 之前 - 好

(分离器颜色为红色,使其更明显)

Button1只是将Panel1的高度增加20:

Panel1.Height := Panel1.Height + 20;
Run Code Online (Sandbox Code Playgroud)

但是当点击控件的顺序改变时,Panel1正在打开状态栏,分割器现在正在调整状态栏的大小.

屏幕截图2  - 后 - 坏

仅当Panel1的高度增加超过StatusBar1(19)的高度时才会发生这种情况.

我认为这是由于有两个底部对齐的控件引起的,但我不知道问题的确切原因以及如何解决它.

我目前正在使用XE2,但我对D2010也有同样的问题.

在这种情况下有没有办法将Panel1的高度设置为任意值,同时确保控件保持其预期位置?

Dav*_*nan 5

通过在更改面板高度后设置控件的Top属性来解决此问题.

StatusBar1.Top := Panel1.Top + Panel1.Height;
Run Code Online (Sandbox Code Playgroud)