在自动调整大小时保持确定/取消按钮居中?

问题描述 投票:0回答:1

C++ Builder 中内置了什么方法来在调整大小时使两个按钮居中于窗体?我使用

TRelativePanel
很接近,但我能做的最好的事情就是将其中一个按钮居中,而另一个则位于该按钮的左侧或右侧。如果我有 3 个按钮,该方法就可以工作,但我确信一些如此常见的东西必须内置它。我如何在 C++ Builder 世界中进行设置?如果我必须使用
OnResize()
事件,我知道该怎么做,但在我看来他们会有一些内置的东西。

虽然我很惊讶他们没有为表单属性设置最小/最大大小,所以也许我期望太多了。

TIA!!

delphi c++builder
1个回答
2
投票

如果您从按钮的 Anchors 设置中删除 akLeft 和 akRight,它们将保持在它们的相对位置(即,如果它们距离左边界 10%,当您调整表单大小时它们将保持距离左边界 10% ).

但这也意味着,如果您将两个按钮放在窗体的中央(左边的按钮位于中央的左侧,右边的按钮位于中央的右侧),那么它们将在您扩展窗体时分开,缩小时重叠。

无论您如何调整它的大小,将两个按钮保持在窗体中心的唯一方法是在 FormResize 事件中放置一些代码,通过计算调整它们的位置。

编辑:根据 Tom Brunberg 的评论,您还可以有一个没有左/右锚点的 TPanel,但有一个底部锚点,面板只是两个按钮组合的大小以及它们之间的任何间距,放置在底部窗体,面板内有两个按钮。如果您从此面板中删除任何斜面:

    P.BevelKind:=TBevelKind.bkNone;
    P.BevelInner:=TBevelCut.bvNone; 
    P.BevelEdges:=[];
    P.Anchors:=[akBottom];

然后它将对用户不可见,它会沿着底部边缘浮动,但保持居中。

如果您所说的“表单属性的最小/最大大小设置”是指将表单的大小调整限制在一定范围内的方法,请查看表单的 Constraints 属性。

© www.soinside.com 2019 - 2024. All rights reserved.