C++ Builder 使用控件的 Align 属性自动调整位置和大小

C++ Builder 参考手册 ➙ 使用控件的 Align 属性自动调整位置和大小


C++ Builder 几乎所有可以显示在 Form 上的控件都有 Align 属性。
和 Anchors 属性类似,Align 属性也是自动调整控件大小和位置的。

控件的 Align 属性

Align 属性取值为 alTop、alBottom、alLeft 和 alRight 时,在窗口或容器中的位置:

Align 属性取不同的值在窗口中的位置

在安排控件位置的时候,先安排上下,再安排左右,剩下的给客户区:

  • 首先处理的是 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 属性,控件就占满他所在的区域,所以普通的按钮不适合设 Align 属性,如果希望右下角的 Button3 始终在屏幕右下角,可以把 Button3 的 Anchors 属性设为 akTop 和 akRight (参考我的上一篇文章:使用控件的 Anchors 属性)。

运行时缩小窗口的效果
运行时放大窗口的效果

相关:

  • 使用控件的 Anchors 属性自动调整位置和大小
  • 枚举窗口内所有的控件
  • 枚举控件所有的属性、事件和方法
  • VCL 类继承关系

C++ Builder 参考手册 ➙ 使用控件的 Align 属性自动调整位置和大小

你可能感兴趣的:(C++ Builder 使用控件的 Align 属性自动调整位置和大小)