对齐组件

不管Snap to Grid选项是否开着,在安放完组件后有时需要对齐。对齐组件是指沿某组件的边对齐几个组件,把组件放在窗体中央,或依一定距离间隔组件。

有两种方式对齐组件:

  • 使用Alignment面板或Alignment对话框。
  • 改变组件的Align属性。

Note

你也许注意到有些组件的Alignment属性,它只属于组件的文本对齐(居中、左对齐或右对齐),与窗体上对齐组件无关。

1、 Alignment面板与Alignment对话框

经常要相对于窗体或另外组件来移动组件或设置大小。Alignment面板包含几个按钮帮助完成这个任务。Alignment对话框与Alignment面板以不同方式执行相同操作。

要显示Alignment面板,从主菜单选【View | Alignment Palette】,如下图所示:

Tip

Alignment面板能节省大量工作,不必花太多时间把它们排成行,把组件放在窗体上,用Alignment面板确定它们的位置。

Align Left Edges 按钮用于左对齐排列。

启动空窗体,做以下工作:

(1)在窗体上随意放置5个按钮Button,不管左边是否对齐;

(2)用拖动边界矩形围绕按钮选择它们,选择表示显示所有按钮都选中,如下图:

(3)从主菜单选择【View | Alignment Palette】,显示Alignment面板,如果需要的话移动Alignment面板,使它不至于掩盖窗体。

(4)Alignment选线板上点击“Align Left Edges”按钮,所有的按钮按左对齐排列,如下图:

现在来看另一个对齐选项,Space Equally, Vertically对齐选项用于等间距隔按钮,按钮仍是选择的,所做的只是点击下“Space Equally, Vertically”按钮,按钮都完全等距离间隔了。如下所示:

Note

Space Equally, Vertically对齐选项把列中第一个(顶部组件)与最后一个(底部组件)之间的组件等距离间隔。在选Space Equally, Vertically对齐选项前,保证第一个和最后一个组件在想要的位置。对于Space Equally, Horizontally对齐选项也是一样的。

Center Horizontally in WindowCenter Vertically in Window对齐选项的功能与其名称指示的一样。这些选项对把单个控件或控件组放到窗体中央是很方便的。只要按钮组仍是选择的,在Alignment面板上点击Center Horizontally in Window和Center Vertically in Window按钮,选中的5个按钮就会被水平垂直的放到窗体的中央,如下图:

Note

Center Horizontally in WindowCenter Verically in Window对齐选项可用于对齐其他组件中的组件,如面板Panel上的按钮。组件被水平或垂直居中,不管其父组件为面板Panel,窗体Form和其他容器组件。

Align TopsAlign BottomsAlign Right Edges对齐选项与之前的Align Left Edges一样。请自行尝试效果。

Tip

在使用任何边对齐选项时,选择的第一个组件为参照点。例如上面5个按钮中如果先选择Button3,然后用Shift+Click选择其余按钮。当点击“Align Left Edges”对齐时,Button3按钮保持不动,其他按钮按照Button3的左边排列,因为Button3是参照组件。

Align Horizontal CentersAlign VerticalCenters选项用于组件相对于另一个居中。举例说明,启动新窗体,做以下事情:

(1)在组件面板上点Additional标签,选择Shape组件,在窗体右上方某个地方点击放置此Shape组件;

(2)改变Shape属性为stCircle

(3)改变Width属性和Height属性为150

(4)双击Brush属性,改变Color属性为clBlack,窗体如下:

(5)在窗体上安放另一个Shape组件;

(6)改变第二个Shape组件的Shape属性为stCircle,在屏幕上有两个不同大小的圆——白色的小圆和黑色的大圆,窗体现在看起来如下:

(7)点击黑色的大圆,按住Shift键点击白色的小圆,选中两个圆;

(8)从主菜单选择【View | Alignment Palette】;

(9)在Alignment面板上点击Align Vertical Centers按钮,使得两个圆垂直中心对齐,效果如下:

(10)再点击Align Horizontal Centers按钮,使得两个圆水平中心对齐,轮胎就做成了,如下图:

注意,由于先选的是黑圈,它固定不动(它是参照组件),在点击对齐按钮时白圈移动。在单个控件上使用,这个两个对齐选项没有作用。

像组件选项面板(Component Palette)一样,Alignment选项也有快捷菜单。把鼠标放到Alignment面板上,右击弹出快捷菜单,如下图:

  • Stay on top 使得Alignment面板总在最顶层。这在经常切换Form Designer和Code Editor时有用,因为Alignment小窗口容易丢失。
  • Show Hints 打开或关闭Alignment面板按钮的工具提示。
  • Hide 隐藏Alignment面板(也可用Alignment面板上的关闭按钮)。再次显示它,需从【View | Alignment Palette】再次选择。
  • Help 关于Alignment面板的帮助信息。

Alignment对话框执行与Alignment面板相同的动作。要调出Alignment对话框,从主菜单【Edit | Align…】或从Form Designer快捷菜单中选择【Position | Align…】,对话框如下:

大多数情况下,Alignment面板更容易使用;如果愿意,当然也可以用Alignment对话框。

2、 使用Align属性

另一种类型的对齐是使用Align属性,此属性控制如何与父组件对齐。Align属性的可能值如下:

  • alBottom 组件与父窗口低端对齐。StatusBar状态行就是沿主窗体底端对齐的组件例子。
  • alClient 组件扩张充满父窗口用户区域;如果其他组件占了部分用户区域,它充满其余用户区域。
  • alLeft 组件沿父窗口左边对齐。
  • alNone 组件与父窗口无特殊关系地放置着,对多数组件此为缺省值。
  • alRight 组件沿父窗口右边对齐。
  • alTop 组件沿父窗口上边对齐。

现在举例子,来解释Align属性。启动空窗体,执行以下步骤:

(1)在组件面板上点击Standard标签,选择Panel组件,把它任意安放在窗体上,如图:

(2)在Object Inspector中设置Panel的Align属性为alTop,面板Panel在窗体顶端对齐,充满窗体整个宽度,如图:

(3)试着移动面板到窗体中央,它会又跳回顶端。

(4)试着把面板宽度变短,它仍保持原来的宽度。

(5)改变面板的高度,面板的高度可以改变。

(6)改变Align属性为alBottom,面板粘贴到窗体的底端。如图:

(7)改变Align属性为alRight,然后设置为alLeft,面板的宽度可改变,面板的高度无法改变。如图:

 

(8)改变Align属性为alClient,面板扩张充满这个客户区,不能再任意方向改变其大小。如图:

(9)改变Align属性为alNone,面板又可以移动和改变大小了。

改变Align为任何异于alNone的值,都可以把面板粘贴到窗体的边上,在alClient情况下,面板粘贴在四个边上。

设置Tab顺序

New Term

Tab顺序(tab order)指用户在键盘上按Tab键时组件接收输入聚焦的顺序。

Delphi窗体使用Tab键自动支持组件导向,这指可以用Tab从组件向前移动到组件,用Shift+Tab向后移。

Note

有两种类型可视化组件。

Windowed(窗口化)组件是接收键盘聚焦的组件,这指它能用鼠标点击或用Tab键击。当组件有键盘聚焦时,它可能显示特殊光标(如编辑控件中I型光标)或在组件上有聚焦矩形。Windowed组件包括Edit、Memo、ListBox、ComboBox及Button组件等。

Non-Windowed组件是不接收键盘聚焦的组件,如Image、SpeedButton、Label、Shape及其他许多都是Non-Windowed组件。

Tab顺序是用于Windowed组件,Non-Windowed组件被排除在Tab顺序之外。

Tab顺序最初基于窗体设计时组件的安排顺序。可通过改变Object Inspector中每个控件的TabOrder属性改变Tab顺序,但此方法比较麻烦。要对每个控件单个去做。Edit Tab Order对话框提供了更容易的办法。如下图:

从主菜单选择【Edit | Tab Order…】打开Edit Tab Order对话框,它显示当前窗体上的所有窗口组件,不显示非窗口组件。要改变Tab顺序,在顺序列表中点击要移动的组件名称,然后通过上下按钮改变顺序,最后点击OK来设置完成,通过浏览每个控件的TabOrder属性确认新设置。

Note

Tab Order从0开始,第一个组件在Tab顺序中为0,第二个为1等等。

Delphi Form Designer (窗体设计器)之四相关推荐

  1. C#用DesignSurface实现一个简单的窗体设计器

    System.ComponentModel.Design.DesignSurface是为设计组件提供一个用户界面,通过它可以实现一个简单的窗体设计器. 在构建之前,我们需要引入System.Desig ...

  2. 在.NET Core 3.0 Preview上使用Windows窗体设计器

    目录 介绍 软件要求 克服限制 证明问题 解决方案 使用代码 兴趣点 介绍 截至撰写本文时,Microsoft和社区目前正在测试.NET Core 3.0.如果您在.NET Core 3.0的正式可用 ...

  3. C# winFrom窗体设计问题-部分文件打不开窗体设计器 变成类.cs

    https://zhidao.baidu.com/question/1513483178103163220.html C# winform程序设计的时候,出现了问题.默认主窗体form1(改名form ...

  4. Windows 窗体设计器中的设计时错误

    在用 VS.NET进行窗体设计的时候,经常会遇到这样的问题:我们需要在构造函数或者在OnLoad事件中进行自己的一些初始化操作,比如连接一个数据库.调用一个资源文件或者后期绑定一个组件.如果代码通过编 ...

  5. 知识管理系统Data Solution研发日记之六 窗体设计器

    知识管理系统Data Solution已经有五篇文章对它进行介绍,可以通过下面的连接,找到前面的文章 知识管理系统Data Solution研发日记之一 场景设计与需求列出 知识管理系统Data So ...

  6. 通过用 .NET 生成自定义窗体设计器来定制应用程序

    本文讨论: ? 设计时环境基本原理 ? 窗体设计器体系结构 ? Visual Studio .NET 中窗体设计器的实现 ? 为自己的应用程序编写窗体设计器而需要实现的服务 在很多年中,MFC 一直是 ...

  7. 在 Visual Studio 2019 中为 .NET Core WinForm App 启用窗体设计器

    当我们在使用 Visual Studio 2019 非预览版本开发 Windows Forms App (.NET Core) 应用程序时是不能使用窗体设计器的.即使在窗体文件上右击选择"显 ...

  8. 自定义窗体设计器-控件测试

    自定义窗体设计器-控件测试 基于.net2的自定义窗体设计器控件(类似visual studio的vb,c#设计器,其实就是vs2005的设计器) 控件由四部分组成:工具栏,工具箱,绘图设计区,属性框 ...

  9. econtrol窗体设计器

    试用了几种窗体设计器以后发现还是ECONTROL最好用. 转载于:https://www.cnblogs.com/hnxxcxg/archive/2010/05/16/2940949.html

  10. 解决VS2019窗体设计器不显示

    尝试了多种方法都无效,最终解决了!我按步骤回忆记录下! 1.尝试重新安装VS,没有效果. 2.图下操作并重启仍然无效. 3.找到解决方案图标,点击右键,打开方式选择VS2019,注意不要选择错了,这里 ...

最新文章

  1. Linux的cmake3的安装 cmake3编译安装成功了的 yum对于cmake3表示成功但实际没成功
  2. CCPC-Wannafly Winter Camp Day8 (Div2, onsite) 补题
  3. EVE-NG安装步骤
  4. android ios 混合编程,React Native与原生(Android、iOS)混编,三端痛点解析
  5. 如何通过路由器日志查看路由器是否断网过_如何正确判断宽带问题还是路由器问题?...
  6. 管理感悟:眼高手低到眼高手高
  7. 依赖注入的两种常用方式(构造器和Setter)与注入内容(装配数据)——Spring IOC/DI(三)
  8. 基于Matlab科技论文绘图:plot、imagesc
  9. 拼多多:“优惠券Bug属网络诈骗”;抖音多闪上架 App Store;任正非不知谁是接班人 | 极客头条...
  10. Apple Silicon (mac m1 pro) 完整配置CS285 (brew, miniforge, mujoco)
  11. js格式化日期和事件
  12. edge 错误 客户端和服务器不支持常用的 SSL 协议版本或密码套件
  13. 2015年8月25号申请入驻一点资讯自媒体平台
  14. 请求与通配符 mime 映射相匹配。请求映射到静态文件处理程序。如果有不同的前提条件,请求将映射到另一个处理程序。
  15. 那些年啊,那些事——一个程序员的奋斗史 ——92
  16. Android 设备 连接打印机
  17. java 控制鼠标点击_java 如何实现控制鼠标点击
  18. Flutter 流式布局、自动换行(Wrap、Flow)
  19. 组装一台计算机需要哪些配置,我想做组装一台电脑能给我一个配置单 我要最高配置的...
  20. Linux常见的发行版

热门文章

  1. AI芯片的过去、现在与未来
  2. 心得丨走过最长的路,就是机器学习过程中的弯路
  3. 01_字符串处理------01_切分
  4. 人工智能,“抛弃”真实数据集?
  5. 黄仁勋回应放弃收购Arm:公司战略并没有太大改变
  6. 应对全球粮食危机 AI、5G与机器视觉联手“养鱼”
  7. 5G 标准的走向,为何越来越不同寻常?
  8. 希尔伯特著名的第六问题 – 原来麦克斯韦早就有解?
  9. 无线通信界的3大天王,谁能驾驭百亿台IoT设备?
  10. 【工业4.0】深度报告:独家解密工业4.0真正图谋?跟踪软件帝国的十年