书城计算机网络Delphi程序设计教程
36209800000016

第16章 常用组件(1)

本章要点

组件的基本概念

常用组件的属性、事件和方法

常用组件的使用

6.1Delphi的组件

Delphi是一个完全集成化的、面向对象的可视化编程环境。可视化控件库(VCL)是它的核心。而Delphi开发环境中的组件是VCL中Tcomponent类的派生类。

组件是Delphi开发Windows应用程序的基本单元。选择组件并定义这些组件的相互作用,是Delphi程序员设计程序的最大量的工作。

提供丰富的组件是Delphi的一大特点。熟练使用这些组件,可以大大提高应用程序的开发效率。

Delphi的组件分为可视组件(也称控件)和非可视组件两大类。可视组件在窗体上有位置和大小,运行时在窗口中显示的位置和设计时在窗体中的位置是一样的。非可视组件在设计时以图标形式显示在窗体上,而在运行时就看不到。

Delphi的可视组件又分为窗口组件和非窗口组件。窗口组件是指在运行时可以被激活的组件,如按钮、编辑框等,而且可以用Tab键对被激活的对象进行切换。非窗口组件是指在运行时不能被激活的组件,如标签、成组框等。

在Delphi集成开发环境中,组件被组织在组件模板中,按功能分别放在不同的选项卡下。

与Delphi以前的版本比较,Delphi6增加了一些新的组件,而且对组件进行了更为科学的分类和组织。特别是为适应新技术的需要,增加或加强了因特网、多媒体、数据库和ActiveX等方面的组件。

另外,随着Delphi的应用日益广泛,一些软件开发者开发了很多第三方组件,极大地方便了Delphi应用程序的开发。

在介绍中,前面组件介绍过的属性,后面组件的类似属性就不再介绍。

6.2标签

标签(Label)组件位于组件模板的【Standard】选项卡上,其图标为。

标签组件是典型的非窗口可视组件,是用来显示文本的主要组件之一,也是Windows应用程序窗口中最常用的组件之一。窗口设计中,利用标签组件的“Caption(标题)”属性来显示用户不能改变的文字或给一些没有标题属性的组件(如编辑框等)充当标题,如图6-1所示。其中右边3个组件为编辑框,其左边用3个标签组件标明这些编辑框的作用,分别用来输入姓名、性别和年龄。

6.2.1标签的属性

下面是一些常用的标签属性。

1.Align属性

Align属性决定标签与容器组件的对齐方式。该属性为枚举型属性,有7种取值,其属性值及其含义如表6-1所示。

2.Alignment属性

Alignment属性决定标签显示的文本的对齐方式。该属性为枚举型属性,有3种取值,其属性值及其含义如表6-2所示。

3.AutoSize属性

AutoSize属性决定标签组件是否可以自动调整大小,以适应Caption属性中文字的大小。

该属性为布尔型,若属性值为True,则可以自动调整,其默认值为True。

4.Caption属性

Caption属性是标签组件最重要的属性之一,指定标签显示的文本内容。该属性为直接输入型,其默认值为标签默认的名字,如Label1、Label2等。

5.Color属性

Color属性决定标签背景的颜色。该属性为枚举型属性,共列出了42种可供选择的颜色。

设置标签的Color属性要考虑其ParentColor属性,若ParentColor属性值为True,则修改标签的父(容器)组件的Color属性将会自动修改标签的Color属性;而当单独设置标签的Color属性时,其ParentColor属性值自动设置为False。

6.Font属性

Font属性决定标签显示文本的字体和大小。该属性同窗体的Font属性一样,既是编辑型,也是集合型属性;既可以通过对话框设置,也可以通过其子属性设置。

7.WordWarp属性

WordWarp属性决定标签中的文本是否可以换行。该属性为布尔型属性,若属性值为True,则可以换行,其默认值为False。

该属性用于标签要显示的文本较长并需要换行的情况。

8.Transparent属性

Transparent属性决定标签是否透明。该属性为布尔型属性,其默认值为False。

6.2.2标签组件的使用举例

例6-1一个使用标签的简单程序

(1)启动Delphi,系统自动创建一个新项目的窗体,如图6-2所示。

(2)设置窗体的属性。为简单起见,这里只设置窗体的Caption属性,设取值为“标签的使用举例”。

(3)添加组件。这里添加一个标签和一个按钮,如图6-3所示。

(4)设置组件的属性。组件的属性值如表6-3所示。

这里,标签和按钮的Name属性都取默认值Label1和Button1。设置了组件属性的窗体如图6-4所示。

(5)添加按钮组件的事件及处理代码。假设,要求程序运行后,单击按钮,标签显示“欢迎进入Delphi世界!”。在窗体上,激活按钮组件,在对象检查器中打开事件选项卡,找到【OnClick】事件,双击其右边的空白处,激活代码编辑窗口,在事件处理过程中输入需要的处理代码“Label1.Caption:=‘欢迎进入Delphi世界!’;”,即标签的Caption属性值由静态时的“标签组件的使用”变为“欢迎进入Delphi世界!”,代码编辑窗口如图6-5所示。

(6)保存单元文件Unit1.pas和项目文件Project1.dpr。

(7)运行程序,单击【欢迎】按钮,屏幕显示运行窗口如图6-6所示。

6.3编辑框

编辑框(Edit)又称文本框,位于组件模板的【Standard】选项卡上,其图标为。

编辑框是典型的窗口型可视组件,既可以用来输入文本,也可以用来显示文本,是Delphi应用程序设计中最常用的组件之一。但应注意,编辑框只能输入单行文本。图6-1中右边3个组件即为编辑框。

6.3.1编辑框的属性

1.BorderStyle属性

BorderStyle属性决定编辑框的边框形式。该属性为枚举型属性,有两种取值:

bsStingle编辑框有立体的边框,默认属性值;bsNone编辑框没有可见边框。

2.MaxLength属性

MaxLength属性决定编辑框可以接受的最多字符数。该属性为直接输入型属性,其默认值为0,表示可接受的最大文本长度为64KB。

3.PasswordChar属性

PasswordChar属性指定用来代替输入文本的字符。该属性为直接输入型属性,用于不便直接显示用户输入文本的情况,如当用编辑框输入口令时,可以指定显示某个字符(如通常用字符“”),代替用户实际输入的口令,以免别人看到。

该属性的默认值为,直接显示实际输入的文本,即用做通常的文本输入;若设置为其他值,则显示设置值代替实际输入的文本。

4.ReadOnly属性

ReadOnly属性决定编辑框是否为只读,即是否允许修改编辑框中的内容。该属性为布尔型属性,其默认值为False,不只读,即允许修改编辑框中的内容,这时编辑框既可用于输入文本,又可用于显示文本;而当属性值为True时,只读,即不允许修改编辑框中的内容,这时编辑框只用于显示文本。

5.Text属性

Text属性指定编辑框中的文本。该属性为字符串类型的直接输入型属性。

编辑框若用于显示文本,则在设计时将该属性值设定为要显示的文本或在程序运行中将该属性值赋值为要显示的文本,语法格式为:Edit1.Text:=‘显示的文本’;若用于输入文本,则在设计时将该属性值设定为空。

6.3.2编辑框的主要事件

OnChange事件:编辑框中的文本发生变化时,触发该事件。

6.3.3编辑框的主要方法

Clear方法:该方法清除编辑框的内容。

使用该方法的语法格式为:

Edit1.Clear;

6.4存储框(Memo)

如上所说,编辑框只能输入单行文本。若要输入多行文本,则要用存储框。存储框通常直接称“Memo”。

Memo位于组件模板的【Standard】选项卡上,其图标为。

Memo是典型的窗口型可视组件,既可以用来输入多行文本,也可以用来显示多行文本。

6.4.1Memo的主要属性

Memo的有些属性同编辑框类似。这里只介绍Memo的一些特殊属性。

1.Lines属性

Lines属性指定Memo中多行文本的内容。该属性为编辑型属性,默认文本为Memo1。

若要在设计时设定Memo的Lines属性,单击该属性的属性值栏右端的【…】按钮,打开如图6-7所示的【StringListEditor】对话框,由图也可看到,默认的文本是“Memo1”,可将它删除,然后输入需要的文本行。

若要在运行时在程序界面输入,则同编辑框一样,直接输入即可,若需换行按Enter键。

若要在运行时在程序代码中增加、插入、删除文本行,要用Memo的方法,将在后面介绍。

若要读取Memo的多行文本,需要指定文本行的行号,行号从0开始,如第1行为Memo1.Lines,第2行为Memo1.Lines[1],等等。Edit1.Text:=Memo1.Lines[1],即将Memo1的第2行文本赋给Edit1。

2.ScrollBars属性

ScrollBars属性决定Memo是否要加滚动条。该属性为枚举型属性,有4种取值,属性值及其含义如表6-4所示。其默认值是“ssNone”。

3.WantReturns属性

WantReturns属性决定Enter键是确认按钮还是Memo文本行换行。

即假设窗体上有一个按钮,且按钮的Default属性设置为True,当按下Enter键时,相当于单击按钮;而若窗体上同时有一个Memo组件,输入文本需换行时也要按Enter键,那么如何区分Enter键究竟是确认按钮还是Memo文本输入换行,这要靠设置Memo的WantReturns属性来解决。

该属性为布尔型属性,若属性值为True,则按下Enter键就是Memo文本输入换行;而若为False,则按下Enter键相当于单击按钮,这时Memo文本输入换行用Ctrl+Enter键。其默认值为True。

4.WantTabs属性

WantTabs属性决定按下Tab键是切换窗口焦点还是在Memo文本输入中移动光标。该属性为布尔型属性,若属性值为True,则按下Tab键是在Memo文本输入中移动光标;若为False,则按下Tab键是切换窗口焦点,这时要在Memo文本输入中移动光标用Ctrl+Tab键。其默认值为False。

5.WordWrap属性

WordWrap属性决定Memo文本输入时是否自动换行。该属性为布尔型属性,若属性值为True,则Memo文本输入时遇到Memo边框自动换行,滚动条不起作用;若为False,则不能自动换行。

6.4.2Memo的主要方法

Memo的方法主要用来对Memo中的文本行进行处理。

1.Add方法

Add方法用来在Memo文本的最后增加一个新的文本行。

如Memo1.Lines.Add(‘ANewLines.’);

圆括号内用单引号括起来的字符串为要增加的文本行。

2.Insert方法

Insert方法用来在Memo文本的指定位置插入一个文本行。

如Memo1.Lines.Insert(2,‘ANewLines’);在第3行(行号从0排起,行号为2,实际是第3行)的前面插入一个新的文本行ANewLines。

3.Move方法

Move方法用来将Memo的一个文本行从一个位置移动到另一个位置。

如Memo1.Lines.Move(2,1);将Memo的第3行文本移动到第2行的前面。

4.Delete方法

Delete方法将Memo指定的文本行删除。

如Memo1.Lines.Delete(2);Memo1的第3行文本删除掉。

6.5按钮