5

我有一个包含三个主要组件的表单:

  1. 设置为与客户端对齐的 FlowPanel
  2. 第二个 FlowPanel 设置为对齐底部
  3. 设置为对齐底部的状态栏。

一切开始看起来都很棒。但是与底部对齐的 FlowPanel 也设置为 AutoSize。它包含一个可以自行折叠的面板。内部面板包含用户可以决定隐藏的摘要信息。这会将 FlowPanel 的大小减小到非常小的大小,但并未完全消失。还有一个按钮,用户可以在其中重新展开摘要面板。

当面板重新展开导致 FlowPanel 增长时,问题就出现了。那时状态栏和 FlowPanel 的顺序是相反的。它们仍然设置为底部对齐,但现在状态栏位于我的 FlowPanel 上方。

我可以在没有折叠面板的测试应用程序中复制它,只需将按钮放在表单上即可查看底部流面板的高度。如果高度增加,顺序会改变。如果它减少,那么一切都保持相同的顺序。我的测试表格中唯一的代码是:

FlowPanel2.Height := FlowPanel2.Height * 2;

我还测试了这个底部面板是一个普通的 TPanel,而不是一个具有相同结果的 FlowPanel。

关于为什么会发生这种情况以及如何防止它的任何想法?

移动状态栏图像

4

3 回答 3

8

我有时也有这个。我的解决方案是将位于底部的控件的顶部设置为“足够大”的值-OtherControl.Top + OtherControl.Height + 1应该可以工作甚至是MaxIntIIRC。

于 2012-12-20T20:19:32.123 回答
8

我的解决方案:

  1. 在表单上放置一个状态栏并与底部对齐
  2. 在表单上放置一个面板(Container_Panel)并与客户端对齐
  3. 在 Container_Panel 上放置一个 FlowPanel 并与底部对齐
  4. 在 Container_Panel 上放置一个 FlowPanel 并与 Client 对齐

现在你应该没有问题了

于 2012-12-20T20:23:21.113 回答
1

如果你愿意花一些钱,我会推荐使用 DevExpress 的ExreeLayoutControl(或类似的东西)。对于简单和复杂的表格来说,它都是一个出色的工具,除了解决您遇到的问题等麻烦的怪癖之外,它还提供了许多其他好处。

于 2012-12-20T22:20:31.440 回答