登陆注册
36209800000014

第14章 窗体组件与窗体的设计(1)

本章要点

窗口、窗体的基本概念

窗体组件的属性

窗体组件的事件

窗体组件的方法

窗体的设计

窗体是应用程序设计时的窗口,是各种组件的载体。因此窗体设计是应用程序设计的基础。本章介绍窗体组件的使用和窗体的设计方法。

5.1窗口、窗体和窗体组件

5.1.1窗口

窗口是屏幕上被边框围住的一部分,是Windows应用程序的用户界面。一个标准的Windows应用程序窗口如图5-1所示。

100Delphi程序设计教程

窗口最上边是标题栏,其左端是窗口的名称,右端3个按钮从左到右分别是“最小化”

按钮、“最大化”按钮和“关闭”按钮。

标题栏的下边是菜单栏,列出控制程序运行的菜单命令。

菜单栏的下边是窗口的工作区(也称用户区),放置着窗口的其他组件、显示程序运行中的信息和程序运行的结果等。

从功能上分,窗口分两大类,即通常意义上的窗口和对话框。

Windows应用程序都有一个或几个窗口,其中有一个作为主窗口,主窗口是应用程序的入口。当应用程序有多个窗口时,通过主窗口的命令,可以激活其他的窗口。

5.1.2窗体组件和窗体

窗口是用窗体组件和它所包含的其他组件设计完成的。

窗体组件是一种特殊的组件,它不包含在组件板中,启动Delphi时系统会自动启用一个新的窗体组件;应用程序要添加新的窗体,只需执行菜单命令【File】→【New】→【Form】即可启用一个新的窗体组件。窗体组件是一个容器组件,它可以包容窗口中所使用的其他组件。窗体组件同其他组件一样,也有属性、事件和方法,因此设计窗口时也要设置窗体组件的属性、事件和方法。

因此可以说,窗体是设计阶段的窗口,而窗口是运行阶段的窗体。

5.2窗体组件的属性

窗体组件的属性有很多,分别决定窗体的外观、布局、状态和其他特性。这里只能介绍窗体组件的一些重要属性。

5.2.1窗体组件的外观属性

1.Caption属性

Caption属性决定窗体标题栏的标题。该属性是直接输入型属性。需要注意的是,Caption属性不同于Name属性,Name属性是窗体组件在程序中的标识符,程序运行时并不会显示出来。

2.BorderIcons属性

BorderIcons属性决定窗体标题栏是否有系统菜单、窗体最小化按钮、窗体最大化按钮和帮助按钮。该属性是集合型属性,包含4个布尔型的子属性:biSystemMenu、biMinimize、biMaxmize和biHelp,分别决定窗体标题栏是否有系统菜单、窗体最小化按钮、窗体最大化按钮和帮助按钮,子属性值为True,则表示有,子属性值为False,则表示没有。

3.BorderStyle属性

BorderStyle属性决定能否改变窗体的大小和窗口边框的形式。该属性是枚举型属性,有6种取值。各种属性值及决定的窗体效果如表5-1所示。其默认值为bsSizeable。

bsSizeToolWin可改变大小,工具窗体边框,标题栏较窄,没有最小化、最大化按钮和系统菜单bsToolWindows不能改变大小,工具窗体边框,标题栏较窄,没有最小化、最大化按钮和系统菜单4.Color属性

Color属性决定窗体的背景颜色。该属性是枚举型属性,共有42种选择,其默认值是clBtnFace。

5.Font属性

Font属性决定窗体中组件上的文字的字体、风格、大小和颜色。该属性既是编辑型属性,也是集合型属性;既可以通过对话框编辑,也可以通过子属性设置。在对象检查器中单击Font属性值右边的【…】按钮,打开【字体】对话框,如图5-2所示。通过该对话框设定窗体中组件上的文字的字体、风格、大小和颜色。

6.FormStyle属性

FormStyle属性决定窗体的类型。该属性是枚举型属性,有4种取值:fsMDIChild、fsMDIForm、fsNormal和fsStayOnTop,分别决定窗体为子窗体、父窗体、标准窗体和顶部窗体。顶部窗体指该窗体将保存在工程中其他窗体的顶部;父窗体和子窗体用在多文档界面程序(MDI)中,将在后面有关章节中介绍。其默认值为fsNormal。

7.HorizStrollBar和VertStrollBar属性HorizStrollBar和VertStrollBar属性决定窗体水平滚动条和垂直滚动条的属性。这两个属性都是集合型属性,各包含13个子属性,其中主要有:用鼠标单击一次滚动条的箭头,滑动块移动的距离;滑动块的初始位置;滑动块的最大滑动距离及滚动条是否可见等。

5.2.2窗体组件的布局属性

1.Align属性

Align属性决定窗体在显示器屏幕上的位置。该属性是枚举型属性,有6种取值:

alBottom、alClient、alLeft、alNone、alRight和alTop,分别决定窗体显示在显示器屏幕的下部、满屏、左边、窗体的位置、右边和上部。其默认值为alNone。

2.Left、Top、Width、Height、ClientWidth和ClientHeight属性这些属性都是直接输入型属性,其中Left和Top决定窗体左上角在显示器屏幕中的位置,Left为窗体左上角的横坐标,Top为窗体左上角的纵坐标;Width和Height决定窗体的宽度和高度;ClientWidth和ClientHeight决定窗体工作区的宽度和高度。

3.Constraints属性

Constraints属性决定窗体的宽度和高度的取值范围。该属性是集合型属性,包含4个直接输入型子属性:MaxWidth、MaxHeight、MinWidth和MinHeight分别为窗体的最大宽度、最大高度、最小宽度、最小高度,默认值都为0,即不做任何限制。

5.2.3窗体组件的状态属性

1.Enabled属性

Enabled属性决定窗口是否有效。该属性为布尔型属性,当为True时窗口有效,否则窗口无效。当窗口有效时,窗口才可以被激活,即窗口才可以接受键盘或鼠标事件(有的资料称为“获得聚焦”或“获得焦点”)。其默认值为True。

2.WindowState属性

WindowState属性决定窗口的初始状态,即程序开始运行时窗口的状态。该属性为枚举型属性,有3种取值:wsNormal、wsMaxmized和wsMinimized,决定窗口的初始状态分别为正常(即设计时窗体的尺寸)、最大化和最小化状态,默认值为wsNormal。

3.ActiveControl属性

ActiveControl属性决定窗体对应的单元程序运行时,窗口中哪个组件首先被激活,即首先获得聚焦。该属性为枚举型属性,其属性值处列出当前窗体中包含的所有组件,可选择其中的一个组件首先获得聚焦。

4.AutoScroll属性

AutoScroll属性决定程序运行、而有组件未能全部显示出来时,是否自动加入滚动条到窗口上。该属性为布尔型属性,其默认值为True。

5.2.4其他属性

Name属性指定窗体在程序中的名称。该属性为直接输入型属性,默认值为Form1、Form2……

需要说明的是,Name属性是每个组件都有的属性。

5.3窗体组件的事件

窗体组件作为最常用的组件,支持几乎所有的对象事件。本节只能介绍窗体组件的主要事件。

1.OnCreate事件

当程序运行、窗口被创建时,触发OnCreate事件。因此可以在OnCreate事件处理代码中,进行一些应用程序的初始化工作,如创建对象、为一些变量赋值等。

2.OnDestroy事件

当窗口被注销时,触发OnDetroy事件。该事件处理代码用来释放程序运行时占用的系统资源。

3.OnActivate和OnDeActivate事件

当窗口被激活时,触发OnActivate事件;而当窗口由激活状态变为非激活状态时,触发OnDeActivate事件。

4.OnClick和OnDbClick事件

单击窗口空白处,触发OnClick事件;双击窗口空白处,触发OnDbClick事件。

5.OnMouseDown、OnMouseUp和OnMouseMove事件这3个事件也都是由鼠标触发的事件,OnMouseDown是按下鼠标键触发的事件,OnMouseUp是松开按下的鼠标键触发的事件,OnMouseMove是移动鼠标触发的事104Delphi程序设计教程件。

6.OnKeyPress、OnKeyDown和OnKeyUp事件

这3个事件都是由键盘触发的事件,OnKeyPress是敲击键盘某个按键触发的事件,OnKeyDown是按下键盘某个按键触发的事件,而OnKeyUp是松开键盘按下的某个按键触发的事件。

7.OnPaint事件

OnPaint事件是窗口的用户区进行刷新操作时触发的事件。

8.OnShow和OnHide事件

当窗口由隐藏状态被显示时,触发OnShow事件;而窗口由显示状态被隐藏时,触发OnHide事件。

5.4窗体组件的方法

窗体组件还有若干方法,用以控制窗体的状态。

1.Close方法

Close方法用来关闭窗口。

2.Hide方法

Hide方法用来隐藏显示的窗口。

3.Show方法

Show方法用来显示窗口。

4.ShowModal方法

ShowModal方法用来以模式对话框的方式显示窗口。关于模式对话框的概念将在第8章对话框设计中介绍。

前面介绍过,组件方法的使用非常简单,其语法格式为:

组件名.方法;

如要关闭窗体组件Form1对应的窗口,则只需:

Form1.Close;

5.5窗体的设计

窗体的设计要经过如下一些步骤。

5.5.1创建窗体

创建一个新的窗体有以下几种方法。

1)启动Delphi,系统自动为新建项目创建一个新的窗体。

2)Delphi程序设计过程中,执行【File】→【New】→【Form】菜单命令,则在当前项目中创建一个新的窗体。

3)Delphi程序设计过程中,执行【File】→【New】→【Other】菜单命令,打开如图5-3所示【NewItems】对话框,选择对话框中的【Form】选项,也可在当前项目中创建一个新的窗体。

这时新建的窗体是一个空白的窗体,如图5-4所示。

5.5.2设置窗体组件的属性

如上所述,窗体组件的属性很多,只能根据需要,设置必要的属性,其他取默认值即可。

5.5.3将需要的组件放置窗体中并设置它们的属性

用前面介绍的方法,将需要的组件放置到窗体中。

在空白窗体组件中放置了2个按钮、3个标签、3个文本框的窗体如图5-5所示。

其他组件放置好以后,就可以根据需要设置这些组件的属性。常用组件的属性后面专门介绍。

5.5.4编辑组件

同类推荐
  • 黑客就在你身边

    黑客就在你身边

    互联网络正在改变着我们的生活,每个人都处在互联网的天罗地网之中。本书以轻松的笔调,向人们介绍了有关“黑客”的知识。当你读完这本书后,你会发觉“黑客”一点都不神秘,他们渴望全社会对他们有一个公正的评价。
  • 成为淘宝创业的超级毕业生

    成为淘宝创业的超级毕业生

    本书讲述如何通过淘宝创业将大学在校生打造成为“超级毕业生”。主要内容包括大学生从事淘宝创业的理论基础、学以致用的操作指南,以及可资借鉴的案例。书中的理念篇可供对创业教育感兴趣的高校教师参考;实战篇提出的“淘宝十二招”,操作简单,易学易用;案例篇讲述了十位成功在校创业大学生的故事,主要供学生参考。读完本书,相信凡是关注大学教育者或希望通过淘宝创业的大学生,皆能从中获得启发,对创业从无心变有心,从有心变行动,亲身投入或参与到这个伟大的事业中来。
  • 不懂PowerPoint就当不好经理

    不懂PowerPoint就当不好经理

    经理人如何用PowerPoint,来规划部门的发展,如何用PowerPoint来表达自己的经营主张?本书为各类经理人提供了从入门到提高,从原理到实战的一系列知识,相信本书将让演示文稿为经理人的管理效能加分!
  • 大话设计模式

    大话设计模式

    本书主要采用JAVA语言介绍设计模式中比较常见的23种设计模式,分29章具体介绍,以现实生活中常见的事情为例来具体分析讲解。
  • 天下一家:网络联通世界(科学新导向丛书)

    天下一家:网络联通世界(科学新导向丛书)

    《天下一家:网络联通世界》一书从网络的基本知识出发,详细地介绍了网络科技的发展与用途,还包括校园网络对普及教育的重大作用。本书内容翔实、结构清晰、图文并茂,是一本实用性极强的网上冲浪参考书。
热门推荐
  • 太极游侠

    太极游侠

    徵羽,一个爱好佛道的大学生,在遇到一个奇怪的中年男人之后,莫名其妙的穿越到一个魔法世界。当他惊奇于魔法而确认仙佛真实存在,立志要修道成仙之时,却发生了一切令他想不到的是···
  • 斗酒儒仙

    斗酒儒仙

    魂穿西游,神修系统,与人斗,与魔舞,与妖争,与圣博亦
  • 重生古代之极品教师

    重生古代之极品教师

    千古名师,万代留名!纵使权倾朝野,杨宁也只想做一个教书先生,生门满布天下。
  • 医手毒妃

    医手毒妃

    六岁之前,浑浑噩噩,惨遭毒打,又被人一掌打下悬崖……十四岁之后,渐渐绽放风华,一手下毒,一手又可医治百病,之前所遭受的必要一一还回……不料却遇上了腹黑妖孽,在外人眼中,她清冷不可及,智商分分钟打败他人,可谁知,在妖孽面前,却总是挖坑把自己埋了。只因一句“娘子,我可不是外人”……
  • 今夕何夕之君心我心

    今夕何夕之君心我心

    她,是上塘河底的鳞儿;她,是鸟鸣涧的杜若溪;他,是龙之谷的乔之陆。她(他)们,是上一世的师兄妹(金鳞,蓝鹃,龙吟),为了天下苍生,牺牲了自我。这一世,他们再世为妖,分道扬镳,未以天下之名逝之,却为情所困:鳞儿:细心如你,叫我如何不喜欢!……哦!原来爱是日久生情积累的一点一点!杜若溪:君生我未生,我生君已老,既不能喜欢,又何必思念?……那么我呢?我愿为你填补你的遗憾!乔之陆:你喜欢我?就不怕我日后哪天辜负了你?……上穷碧落下黄泉,只要是为你,我有何不敢?千年之后,当使命再一次降临到她(他)的肩上,一系列的不可思议:女娲娘娘的有缘人;女娲炼石;黑龙魔尊;还有,刻骨铭心的爱情。使命与爱情,小我和天下!看她(他)们如何抉择,是放弃?还是兼顾!……三段跨越千年的虐恋,由此展开……注:本小说为单元体小说,会分为三个单元!讲述三段人妖痴恋!单元与单元之间没有直接的联系哦!
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 骆驼祥子

    骆驼祥子

    祥子是个一无所有,却心怀奋斗热情的乡下人。他勤快、善良,有自己的梦想。他相信流自己的汗,吃自己的饭,就能过上自己想要的生活。但生活让他的人生三起三落。挫折终将他磨成他所不屑一顾的人……年轻是美好的,奋斗是苦涩的,在残酷的世界里,努力到底有着怎样的意义?
  • 从伤感到月亮的距离

    从伤感到月亮的距离

    陈晓辉、一路开花主编的《从伤感到月亮的距离》精选了当代最为精华的篇章。用心去看,去领悟,或许有的故事会给你以智慧的启迪,有的会让你感动落泪,有的会带给你特别的感受,有的则会让你会心一笑……
  • 如此喜欢你

    如此喜欢你

    一次偶然的春季幸运消费让她来到期待已久的贵族学院,和喜欢的人在同一个学院,同一个班级。一场意外,她处处受敌,而他的正牌女友却处处帮她,她只能把爱藏到心底。可是,某天,她却接到他的告白,正当两难之际,校园里又出现另一风云人物,和她纠葛不断!--情节虚构,请勿模仿
  • 屠神记

    屠神记

    既然神已腐朽,那么就让我为芸芸众生来结束这神的生命!