选择组件

1、 选择单个组件

要选择单个组件,只要在上面点击即可。选择组件时,八个黑色大小标记符出现在组件周围以提示它被选择了。如图所示:

选择组件时Object Inspector会发生变化,以显示所选控件的属性和事件。要取消选择,点击窗体背景或者在控件上Shift + Click取消选择。

Tip

每个组件有相应缺省事件处理程序。当双击窗体上组件时,Code Editor显示该组件的缺省事件处理程序,为输入代码做准备。在多数情况下,缺省事件处理程序是OnClick处理程序。双击组件时到底发生什么依赖于组件是怎么设计的。

2、 选择一组组件

也可以选择多个组件,把它们看作一组,有三种方法实现:

  • 用键盘和鼠标Shift + Click
  • 用鼠标拖动
  • 从主菜单上选择【Edit | Select All】或Ctrl + A,将选择窗体上所有组件。

3、 使用Shift + Click选择组件

要用Shift + Click选择组件,先选择一个控件,然后按住键盘上的Shift键,在想要包含到选择中的任何其他控件上点击。点击的每个控件边界有四个灰色框,提示它是选择中的一部分了。
继续按住Shift键,再在组件上点击就从选择中取消了控件。

举例子说明,先启动空窗体:

(1)在窗体上任意安放三个按钮,它们会自动编号为Button1、Button2和Button3;
(2)点击Button1,八个黑色小矩形出现在Button1控件的周围,如下图


(3)按住键盘上的Shift键,点击Button2,增加到选择中。Button1和Button2的角上都出现灰色框,如下图:

 
(4)在Button3上Shift+Click,三个按钮全部选择中,如下图:

 
(5)再在Button2上Shift+Click,Button2从选择中删除(灰色小框消失),Button1和Button3仍在选择中,如下图:

 
(6)在Button1上Shift+Click,Button3是唯一在选择中的组件,灰色角框变成了八个黑色矩形框,如下图:

 
(7)在Button1与Button2上Shift+Click,所有三个按钮又都是选择中的部分,如下图:

Note

如果在已被选择的组件上点击则什么也不会发生。选择当前某组选择中的单个控件,需要先在窗体背景上点击或按ESC键删除此组选择。然后在想选择的单个控件上点击。

4、 使用拖动选择多个组件

可拖动围绕在要选择的控件边界矩形来选择多个控件。边界矩形(bounding rectangle)边为蚂蚁线,在拖动时可以改变大小。事实上,不必拖动边界矩形完全围绕在组件上,为了组件能包含到选择中,只需要边界矩形接触它就可以选中,如下图所示:

在开始时一定要把鼠标光标放在窗体背景上而不是组件上。按住鼠标左键开始拖动,在拖动时会看到边界矩形。围绕或者接触到要选的组件时释放鼠标左键,边界矩形中任何组件都包含在选择中。

选择了一组控件后,可用前面介绍的Shift+Click技术来增加其他控件到选择中,或从选择中删除控件。

5、 选择多个项:组件中的组件

经常需要把组件放在其他组件中。Panel面板组件经常当做其他组件的容器。要在Panel上选择一组组件,必须拖动选择组件的同时按Ctrl键。

移动组件

移动组件是非常简单的,要移动单个组件,把鼠标放到组件上拖动。在拖动时表示组件的矩形随鼠标光标移动。当把矩形放到需要的位置时,释放鼠标按键,组件就移动到哪个位置。

Note

当通过拖动释放移动控件时,控件Left和Top属性自动更新。在移动组件时,就会看到鼠标光标下出现工具提示信息。工具提示信息显示停止拖动时组件的新的Left和Top信息。

在用拖动设置组件大小时,也会有类似的提示信息,显示新的Height和Width信息。

Note

用拖动释放移动组件最容易。如果需要更好的控制,可以在Object Inspector中改变组件的Left和Top属性。也可以使用各种对齐选项。

如果“Snap to grid”选项开着,拖动矩形会跳到最近的坐标网格点上。

Tip

若在拖动时改变了想法,在释放鼠标按键前按键盘ESC键来取消操作,组件就回到原始位置。

拖动一组控件也一样,选择了一组组件后,把鼠标光标放在任何一个控件上开始拖动,对组件的每个控件都将显示拖动矩形。这使大家能想象到在释放鼠标按钮时放置的位置。

Note

如果选择组中有不同的父控件,就不能移动组件。例如,在主窗体选了Button组件,又在Panel中选择了SpeedButton组件,因这两个组件有不同的父控件,就不能作为一组来移动它。

Tip

在选择了控件时,在键盘上使用上下左右键的同时按住Ctrl来一次移动一个像素。此技术对控件组和单个控件都有效。使用此技术时Snap to grid特性将被忽略。用这种方法移动完组件后,组件不再位于坐标网格上——有一些偏移量。若拖动该组件,在拖动时它保持与坐标网格点的偏移量。若拖动该组件,在拖动时它保持与坐标网格点的偏移量。

Tip

如果用Ctrl+Arrow方式来移动控件,并想将它与坐标网格对齐,可以从右键快捷菜单中选择【Position | Align to Grid】,控件的左上角会跳到最近坐标网格点。
拖动控件不能拖出它的父窗口,如果拖动组件离开窗体的左边或上边,会看见组件被剪切在窗体边上;若拖动组件离开窗体的右边或下端并释放它,在窗体上就会出现滚动栏,可以滚动着看窗体的其余部分。而窗体的Width和Height属性不会改变。如果拖动组件回到窗体的可见部分,则滚动栏取消。这是Form的缺省特性,如果不改变窗体的AutoScroll属性为False,它都会发生。如下图,显示了被拖动部分离开窗体右边界的Memo组件。注意滚动栏出现在窗体的低端。

转载于:https://www.cnblogs.com/pchmonster/archive/2012/01/13/2321475.html

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. [翻译]用于.NET Core的Windows窗体设计器发布

    本文由微信公众号<开发者精选资讯>翻译首发,转载请注明来源 今天我们很高兴地宣布,.NET Core 项目的 Windows 窗体设计器现在可以在 Visual Studio 2019 1 ...

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

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

  9. C# WPF窗体设计器显示以及App.xaml文件打不开(VS 2022)

    问题描述: 在项目中遇到了App.xaml设计器打不开以及窗体设计器不显示,只有代码,如图所示: 可以明显的看见左下角的设计器不见,但是用户控件又有设计器 解决方法: (一.App.xaml不能正常打 ...

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

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

最新文章

  1. Android Environment 的作用以及常用的方法
  2. Add Digits
  3. 计算机语言的比较英文论文,科学网—撰写高质量英文科技论文的心态、布局、程序和方法 - 岳中琦的博文...
  4. Mac下安装atari_py报错Exception: ROM is missing for pong
  5. Lucene查询结果高亮
  6. win98装python_Windows 上的 Python安装
  7. mysql数据库分享点滴
  8. Gym 100781A Adjoin the Networks——树的直径
  9. 页面增加问号图标,鼠标放置会提示文字信息。(记录日志)
  10. 4.链表LinkedList
  11. SQL SERVER 服务器登录名、数据库用户名、服务器角色、数据库角色、DENY、sp_addlogin ETC.
  12. 软件测试基础学习 - Linux文件及文件内容查找命令总结
  13. 图片翻译成中文其实很简单,只需这几步
  14. 阿甘修理机器人cd_【补偿】遗失的美好~
  15. Matlab最小面积包围四边形
  16. 聚合物泥浆php特点,钻井液的组成与体系分类
  17. ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge 状压dp
  18. 山外山在科创板上市:市值约47亿元,高光勇为实际控制人
  19. 【USACO 2012 Open】Running Laps(树状数组)
  20. Methods annotated with '@' must be overridable

热门文章

  1. 使用Java处理除法运算的陷阱
  2. mysql表内增加一个字段并赋值
  3. 简单但经典的算法题:有效字母的异位词
  4. 简述网络文件系统NFS,并说明其作用。
  5. 基于stm32f103zet6的DS1302学习
  6. springboot:实现分页查询,以及翻页功能
  7. 数据结构:单向环形链表
  8. Elasticsearch索引定时清理
  9. k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)
  10. 我的vExpert之路-传递正能量!