我有一个包含三个主要组件的表单:
一切都开始看起来很棒。但是与底部对齐的FlowPanel也设置为AutoSize。它包含一个可以自行折叠的面板。内部面板包含用户可以决定隐藏的摘要信息。这会将FlowPanel的大小降低到非常小的尺寸但不会完全消失。用户可以重新展开摘要面板的按钮。
当面板重新展开导致FlowPanel增长时出现问题。那时状态栏和FlowPanel的顺序相反。它们仍然设置为对齐底部,但现在状态栏位于我的FlowPanel之上。
我可以在没有折叠面板的测试应用程序中复制它,只需在表单上放置按钮即可查看底部流量面板的高度。如果高度增加,则订单会发生变化。如果它减少了,那么一切都保持相同的顺序。我的测试表单中唯一的代码是:
FlowPanel2.Height := FlowPanel2.Height * 2;
我还测试了这个,底部面板是普通的TPanel,而不是具有相同结果的FlowPanel。
关于为什么会发生这种情况以及如何预防这种情况的任何想法?
答案 0 :(得分:8)
我有时也会这样。我的解决方案是将控件的顶部设置在底部,使其达到“足够大”的值 - 类似OtherControl.Top + OtherControl.Height + 1
应该工作,甚至MaxInt
IIRC。
答案 1 :(得分:8)
我的解决方案:
现在你应该没有问题了
答案 2 :(得分:1)
如果您愿意花一些钱,我建议您使用DevExpress'ExpreeLayoutControl(或类似的东西)。它是简单和复杂形式的优秀工具,除了解决您遇到的问题等棘手问题外,还提供了许多其他好处。