登陆注册
36209800000015

第15章 窗体组件与窗体的设计(2)

编辑组件包括调整组件的大小和位置、对齐组件,以及对组件进行删除、复制、剪切和粘贴等操作。而要进行这些操作,首先要选中要操作的组件。

1.选中组件

选中组件分单个组件和多个组件两种情况。

1)选中单个组件

如果要选中的单个组件没有被其他组件覆盖,只需单击选定的组件,这时该组件被激活,可以对该组件进行编辑了;如果要选中的单个组件被另一组件完全覆盖了,要右击覆盖它的那个组件,在弹出的快捷菜单中执行【SendToBack】命令,则选定的组件会显示在表层,再用如上方法激活该组件。

2)选中多个组件

选中多个组件有两种方法:

按住鼠标左键,拖动鼠标,这时会显示一个虚线矩形框,继续拖动鼠标,将要选中的多个组件包围在矩形框中,松开鼠标左键,被选中的多个组件的边框出现4个灰色小方块,表示这些组件被选中;按住Shift键,然后用鼠标左键一个一个单击要选中的组件,被选中组件的边框也会出现4个灰色的小方块。

2.改变组件大小

首先激活要改变大小的组件,然后将鼠标指针移到组件边框的黑色小方块上,鼠标指针变成双向箭头,按住鼠标左键,上下、左右拖动鼠标,则组件就会按鼠标拖动的方向改变其大小。

3.改变组件位置

首先选中要改变位置的组件,然后将鼠标指针移到组件的中间部位,按住鼠标左键,拖动鼠标,则组件就会随鼠标在窗体内移动,拖动到预定位置后放开鼠标左键。

4.对齐多个组件

为使组件排列整齐、美观,有时需要将多个组件按横向或纵向对齐。对齐组件的操作步骤如下。

(1)按如上方法选中要对齐的多个组件。

(2)进行如下操作之一,打开【Alignment】对话框,如图5-6所示。

执行【Edit】→【Align】菜单命令。

将鼠标移到被选中的任一组件中,单击鼠标右键,在弹出的快捷菜单中执行【Psition】→【Align】菜单命令。

(3)根据组件排列的需要,可在【Horizontal】(水平)选项组中选择【Leftsides】(左对齐)、【Centers】(居中对齐)、【Rightsides】(右对齐)、【Spaceequally】(水平均匀分布)、【Centerinwindow】(组件在窗口横向居中)单选按钮,或在【Vertical】(垂直)选项组中选择【Tops】(顶端对齐)、【Centers】(居中对齐)、【Bottoms】(底端对齐)、【Spaceequally】(垂直均匀分布)、【Centerinwindow】(组件在窗口纵向居中)单选按钮。

(4)单击【OK】按钮,组件按要求对齐。

5.删除组件

要删除一个或几个组件,首先选中要删除的组件,然后按键盘上的【Delete】键,则选中的组件被删除。

6.复制、剪切、粘贴组件

要复制或剪切一个或几个组件,首先选中要复制或剪切的组件,执行【Edit】→【Copy】

或【Cut】菜单命令,然后再执行【Edit】→【Paste】菜单命令,则选中的组件被复制或剪切到原组件相邻位置。

7.锁定组件

窗体设计好之后,为了确保窗体中各组件的位置因不小心而变动,可将组件锁定。

锁定组件,首先选中要锁定的组件,然后执行【Edit】→【LockControls】菜单命令。

组件被锁定后,其位置和大小就不再能改变,除非解除锁定。解除锁定同锁定组件的方法一样。

5.5.5设定窗体上控件的Tab顺序

如前所述,控件是指可视组件。

控件的Tab顺序是指用键盘上的【Tab】键切换当前活动控件时所遵循的顺序,如图5-5所示窗体上控件的Tab顺序为【Button1】、【Button2】、【Edit1】、【Edit2】、【Edit3】,即程序启动后,【Button1】首先被激活,按【Tab】键,【Button2】被激活,再按【Tab】键,【Edit1】

被激活,……依次类推。

窗体上控件的Tab顺序由控件的【TabOrder】属性决定,如上例控件【Button1】的【TabOrder】的属性值为0,控件【Button2】的【TabOrder】的属性值为1等。窗体上控件默认的Tab顺序为控件在窗体上创建的顺序。

根据需要,可以改变控件默认的Tab顺序。设定控件Tab顺序的方法有以下两种。

选中要设定Tab顺序的控件,按需要设定它的【TabOrder】属性值,这种方法只能一个控件一个控件地设定。

在当前窗体中执行【Edit】→【TabOrder】菜单命令,打开如图5-7所示【EditTabOrder】对话框。对话框列出了窗体上全部控件当前的Tab顺序。要设定控件的Tab顺序,首先选择组件,然后用上下箭头按钮调整其顺序,调整好后单击【OK】按钮,完成组件Tab顺序的设定。

5.5.6设定窗体上组件的Create顺序

组件的Create顺序,含义同组件的Tab顺序类似,只是Create顺序是对不可视组件而言。组件的默认Create顺序为组件在窗体上创建的顺序。

执行【Edit】→【CreationOrder】菜单命令,打开如图5-8所示的【CreationOrder】

对话框。同设定Tab顺序类似,通过对话框也可以重新设定组件的Create顺序。

5.5.7保存窗体

经过以上步骤,窗体的设计就完成了。执行【File】→【SaveAll】菜单命令,就可以把这些设计的信息保存起来。生成的Unit1.pas和Unit1.dfm文件,特别是Unit1.dfm文件记录了窗体设计的有关信息。

5.6使用窗体模板生成窗体

5.6.1使用系统提供的窗体模板生成窗体

为了使用户快捷地设计出规范的窗体,Delphi提供了窗体模板。对于类似于窗体模板的窗体的设计,用户可使用窗体模板生成窗体框架,然后根据自己的需要做必要的修改,这可以减轻设计的工作量,加快窗体的设计。

使用窗体模板生成窗体的步骤如下。

(1)执行【File】→【New】→【Other】菜单命令,或单击工具栏中的【New】按钮,打开如图5-9所示的【NewItems】对话框。

(2)选择对话框的【Forms】选项卡,如图5-10所示。

(3)根据需要,选中对话框下方的【Copy】、【Inherit】和【Use】三个单选按钮之一,选择使用模板生成窗体的方式。

【Copy】复制方式:Delphi将把窗体模板的窗体文件(.dfm)和单元文件(.pas)文件复制一份,并以默认的文件名Formn.dfm和Unitn.pas命名文件(n为数字1,2,3,…)。

【Inherit】继承方式:Delphi将以窗体模板定义的类为基类,派生出一个新的窗体类,并把派生窗体的.dfm文件和.pas文件以默认的文件名加入到项目中。

【Use】使用方式:Delphi将在项目文件(.dpr)的Uses语句中声明窗体模板的单元文件,这样这个窗体文件并没有复制到项目中,但是编译项目时,Delphi将根据项目文件的声明将窗体模板的文件一起编译连接。

在这种情况下,不要修改窗体和单元文件,因为这时修改的是模板,而不是模板的复制。

(4)选择对话框中列出的窗体模板的样式。

对话框列出了6种样式的窗体模板,具体如下。

Aboutbox模板:标准的关于对话框,如图5-11所示。

Duallistbox模板:有两个列表框的对话框,如图5-12所示。

QuickReportLabels模板:基于QuickReport组件的普通报表窗体,如图5-13所示。

QuickReportList模板:基于QuickReport组件的列表型报表窗体,如图5-14所示。

QuickReportMaster/Detail模板:带有两个表(分别称为Master--主表、Detail--明细表)的报表窗体,如图5-15所示。

Tabbedpages模板:多页窗体,如图5-16所示。

用户可以根据自己的需要,选择合适的窗体模板作为设计的基础,加以必要的修改,设计自己的窗体,以减少设计的工作量。

5.6.2创建新的窗体模板

用户除了可以使用系统提供的窗体模板生成窗体外,也可以把自己设计的窗体作为模板,保存在系统的窗体模板中,以方便今后的设计。其步骤如下。

(1)按要求设计一个窗体。

(2)右击窗体,在弹出的快捷菜单中执行【AddRepository】菜单命令,打开【AddtoRepository】对话框,如图5-17所示。

(3)在【Title】编辑框中输入窗体模板的名称;在【Description】编辑框中输入对窗体模板的描述;在【Page】编辑框中输入“Forms”;在【Author】编辑框中输入作者的姓名;单击【Browse】按钮,选择窗体模板的图标;然后单击【OK】按钮,保存新建窗体模板。

这样,再打开【NewItems】对话框的【Forms】选项卡时,就会发现用户新建的窗体模板。

5.7多窗体的设计

多窗体程序,就是一个应用程序中有多个窗体,这是程序设计中经常用到的。

5.7.1在项目中添加新的窗体

设计多窗体程序,首先要在一个存在的项目中添加新的窗体。

一个只有一个窗体的项目中,执行菜单栏中的【Project】→【ViewSource】菜单命令,可以看到项目文件代码为:

执行【Project】→【Options】菜单命令,打开如图5-18所示的【ProjectOptions】对话框。

由代码和对话框都可以看到,这时项目包含一个窗体。

执行【File】→【New】→【Form】菜单命令,则一个新的窗体Form2添加到项目中,这时项目文件代码变为:

而【ProjectOptions】对话框则变为如图5-19所示。

由代码和对话框都可以看到,这时项目就包含了两个窗体。

用同样的方法,可以建立应用程序的更多个窗体。

5.7.2确定主窗体

在多窗体应用程序中,程序开始运行时只能自动显示一个窗体,这就是主窗体,默认的主窗体是第一个建立的窗体,即Form1,在图5-19所示的【ProjectOptions】对话框的【Mainform】下拉列表框中显示的就是Form1。

用户可以更换主窗体,在图5-19所示的【ProjectOptions】对话框中,单击【Mainform】

下拉列表框右端的下拉箭头,从窗体列表中选择用户需要的主窗体,然后单击【OK】按钮,再运行程序时,自动显示的就是用户新选择的主窗体了。

5.7.3其他窗体的显示

如上所述,多窗体应用程序开始运行时,只能自动显示主窗体。而其他窗体的显示,只能由控制该窗体显示的单元文件的代码控制。

假设程序由Form1和Form2组成,Form1是主窗体,Form2由Form1控制显示,即Form1用到了Form2,则首先应在Form1的单元文件Unit1中关键字implementation后加入:

其次,要在Unit1的控制显示Form2的事件处理代码中,加入相应的显示Form2的代码:

依此类推,多窗体程序的其他窗体也可以正常显示了。

习题5

1.窗口和窗体有什么不同?

2.窗体的主要属性有哪些?

3.如何使用窗体模板生成窗体?

4.设计多窗体应用程序的要点是什么?

5.设计一个实现如下功能的小程序:

有一个主窗口,有一个按钮,按钮的标题为“创建新窗口”。单击按钮,创建一个新的窗口,且在创建时用其上的标签组件显示“一个新窗口建立了”(提示:显示功能由新窗体的建立事件OnCreate处理过程实现)。

同类推荐
  • 多媒体技术

    多媒体技术

    多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术
  • 悟道:一位IT高管20年的职场心经

    悟道:一位IT高管20年的职场心经

    本书是一位有20多年职场经验的IT企业高管撰写的一系列有关职场悟道的短文集成,讲述的是在企业里如何修炼自己,如何摆平自己的心态,怎样做到“世事洞明”和“人情练达”,如何“搞定老板”,怎样做到工作和生活平衡等诸多话题,涉及到跳槽、转行、升迁、环境、沟通、老板、下属、老外等等。每一篇都以作者的亲身经历或者身边的故事说明道理,语言简洁流畅,妙趣横生,更有不少经典片段和发人深省的职场警句,读起来就像是一个睿智幽默的老朋友坐在你面前娓娓道来。
  • 信息技术教育大全-操作系统大全

    信息技术教育大全-操作系统大全

    本书系统介绍说明了有关电子信息系统及操作系统等知识,希望对该信息技术有需求的读者能够从中得到帮助。
  • 组态软件控制技术

    组态软件控制技术

    监控组态软件是完成数据采集与过程控制的专用软件,它以计算机为基本工具,为实施数据采集、过程监控、生产控制提供了基础平台和开发环境。本书从应用角度出发,详细介绍了组态软件应用程序的开发过程。对窗口界面编辑、动画链接、实时和历史趋势、安全机制、I/O设备连接,以及生产应用等内容都做了非常详细的介绍。MCGS是优秀的监控组态软件之一,它功能强大、使用方便,可以非常容易地实现监视、控制、管理的各项功能,并可提供软、硬件的全部接口,方便、快速地进行系统集成,构成不同需求的数据采集与监控系统。本书可作为高等学校计算机应用、自动控制、电子技术、机电技术专业的教材,同时还可作为相关专业工程技术人员的自学用书。
  • 中文版AutoCAD2005建筑绘图精讲精学

    中文版AutoCAD2005建筑绘图精讲精学

    本书从中文版AutoCAD2005建筑绘图的基础进行介绍,讲解了建筑绘图的环境设置、二维建筑图形的绘制、二维建筑及装饰图形的编辑、建筑绘图中的文字标注和图形查询、建筑装潢平面图中的尺寸标注、建筑绘图中图块的应用、建筑平面图的绘制、建筑立面图的绘制、建筑剖面图的绘制、建筑绘图中的三维造型、三维建筑模型绘制及建筑图纸的布局与打印输出等内容。
热门推荐
  • 神真破天

    神真破天

    神帝大陆,没有魔法,有的,只是源源不断的神气!神者,神师,大神师,神灵,神王,神皇,神宗,神尊,真神尊,神圣,真神圣,神帝!无比森严的等级!当地球的超级修真者,3S级异能者,神级武者龙潇尘重生在神帝大陆的时候,又会发生什么呢?(本故事及人物纯属虚构,如有雷同,纯属巧合,切勿模仿。)
  • 花千骨之奈何情深

    花千骨之奈何情深

    黛眉双锁,只为一人倾心。满目江水,伊人何堪伤神。弄拨弦思还乱几分秋雨,飘起落叶满天。冬风潇涩,谁血情把雪染。非人间魂飞断忆君意遗世恋
  • 惑红颜

    惑红颜

    穿就穿吧,穿在婴儿身上也就算了,为毛爹叫关毅,为毛给她取名叫关羽?她是女的好不好!谁说关羽就不能恋爱,刘备哥哥,你就等着吧!怎么曹操也来凑热闹?--情节虚构,请勿模仿
  • 嫡冠京华:摄政王妃太难追!

    嫡冠京华:摄政王妃太难追!

    孟宛清知道,从弟弟失踪的那一天起她就不再是自己了。她束起裹胸,扮上男装,以弟弟的身份重回孟府,为的,不就是将曾受过的那些挫磨加倍奉还么!至于那个连她男装都喜爱的某位大人,她其实很想告诉他:她,是个女的!--情节虚构,请勿模仿
  • 绝世庶妃:王爷霸宠小娇妻

    绝世庶妃:王爷霸宠小娇妻

    (已停更,推荐新书《御宠狂妃:王爷乖乖,你别闹》)她是丞相府庶出二小姐,但是光芒却遮盖住了嫡出大小姐,他是皇宫里的六皇子亦是最不受宠的的皇子。初见时她倾心于他,第二次相见时她赐婚于他,第三次相见时,他出于目的接近她,反而得到了她的反感,第四次相见时,又会擦出怎样的火花?
  • 宠物小精灵之小曼

    宠物小精灵之小曼

    王满很烦恼,自己是一个宝可梦迷没错,可是不是有什么地方出错了?
  • 红妆十里迎娶凤后

    红妆十里迎娶凤后

    “你是个什么东西?哟!这不是废柴二小姐吗?不是死了吗怎么在这里?”
  • 谁夕霜阳剑

    谁夕霜阳剑

    一落痕,一无谢,一剑封喉。年少时,他们意气满满,皆是天之骄子。寂渊无负落痕,荷萧逸负无谢。剑有所意,在朝歌,他们互相结识,成了两对佳话,也成了不缘之人。……寂渊无:我所愿——星河欲转,流萤乱舞。惜夜:孤峰倚剑青天问,生几何,谁与我!碧云:本爷乃楚中狂人,便是天神亲临也无妨,何须怕你小小草民!……末时,寂渊无在断魂崖边坠下,荷萧逸在曲径通幽处诗别,惜夜斩灵而亡,正应了两把剑之剑语:落痕:人间路过,陌陌红尘,苍生不留痕。无谢:阳关玩去,阡阡四海,一剑成永恒。……
  • 情恋仇蝶

    情恋仇蝶

    十多岁的一场噩梦打破了我美好的童年。接下来的日子,该死的使命从我十多岁一直‘牵绊’到如今。直到遇见他,才知道什么是爱?复仇的道路有很多挫折需要克服,他陪我……复仇的道路有复杂交错的感情网,他为我而断······复仇的道路困难重重,他帮我抵挡……可天意再次捉弄了我,在我即将结束使命时,却告诉我这一切只是一个骗局?!也许这是最好的结局,天还不算"恨"我,让我原本暗淡无色的生命中染上了一点绚烂的色彩······
  • 我是神仙没人信

    我是神仙没人信

    我说我是神仙你信吗?什么?你不信,让我飞给你看~谁告诉你的神仙就一定会飞?在我的神仙世界里,神仙不但不会飞,而且人人都可以骑在神仙的头上拉屎,神仙是没有尊严的。