C++ Builder 参考手册 ➙ 使用控件的 Align 属性自动调整位置和大小
C++ Builder 几乎所有可以显示在 Form 上的控件都有 Align 属性。
和 Anchors 属性类似,Align 属性也是自动调整控件大小和位置的。
Align 属性取值为 alTop、alBottom、alLeft 和 alRight 时,在窗口或容器中的位置:
在安排控件位置的时候,先安排上下,再安排左右,剩下的给客户区:
- 首先处理的是 Align 属性为 alTop 和 alBottom 的控件,把他们分别放在窗口或容器的上面和下面,宽度和窗口或容器的客户区相等,例如工具条和状态栏;
- 接下来处理的是 alLeft 和 alRight,分别放在窗口的左边和右边,高度和窗口或容器的这部分区域相同,例如导航栏;
- 最后处理的是 alClient,窗口去除 alTop、alLeft、alRight、alBottom 控件之外的部分,占满这个区域,例如浏览或文字编辑区域等。
Align 属性值 | 说明 |
---|---|
alNone | 控件保持原来的位置和大小,大多数控件 Align 的默认值都是 alNone |
alTop | 放在窗口或容器的上边,宽度和窗口或容器相等,高度保持不变 |
alBottom | 放在窗口或容器的下边,宽度和窗口或容器相等,高度保持不变 |
alLeft | 放在窗口或容器中除去 Align 属性为 alTop 或 alBottom 的控件占用的空间之外的剩余的部分的左边,高度和这部分区域的高度相等,宽度保持不变 |
alRight | 放在窗口或容器中除去 Align 属性为 alTop 或 alBottom 的控件占用的空间之外的剩余的部分的右边,高度和这部分区域的高度相等,宽度保持不变 |
alClient | 放在窗口或容器除去 Align 属性为 alTop、alBottom、alLeft、alRight 之外的部分 |
alCustom | 这样的控件,按照窗口或容器控件的 OnAlignInsertBefore 和 OnAlignPosition 事件处理位置和大小 |
例子:窗口上面有一个 TreeView 树形结构,一个 ListView 表格,下面的 Panel1 里面放 3 个按钮 Button1、Button2 和 Button3。
要注意先设 alTop、alBottom,再设 alLeft 和 alRight 属性的控件,最后设 alClient 的控件,因为先把 alClient 设上了,这个控件就占满窗口了,如果发现控件占满窗口把别的控件都挡住了,需要把这个控件的 Align 属性改回 alNone,把别的控件都调整好了再把这个 alClient 设上。
控件 | Align 属性值 |
---|---|
Panel1 | alBottom |
TreeView1 | alLeft |
ListView1 | alClient |
由于设置了 Align 属性,控件就占满他所在的区域,所以普通的按钮不适合设 Align 属性,如果希望右下角的 Button3 始终在屏幕右下角,可以把 Button3 的 Anchors 属性设为 akTop 和 akRight (参考我的上一篇文章:使用控件的 Anchors 属性)。
相关:
C++ Builder 参考手册 ➙ 使用控件的 Align 属性自动调整位置和大小