Delphi讲义电子科技大学讲师,屈鸿电话,13198563731
信箱,croacer@etang.com
Qq:3004887
第三讲 delphi组件
DELPHI中最重要的部分是可视化组件库 (VCL),其中一部分是组件,显示在组件面板上,另一部分是一些通用的类。
介绍组件的概念、组件和窗体的关系、以及一些常用组件的用法一,窗体在 Windows操作系统中,人机交互的界面主要是通过一些窗口和对话框实现的。在 Delphi中,这些窗口和对话框就是程序设计阶段的窗体,
D e l p h i 的可视化设计工作就是在窗体中进行的。
通常,窗体中会有一些控件,通过这些控件可以实现多种多样的功能。
在 Delphi中,把这些运行期间出现在窗口和对话框中的控件称为可视组件。在窗体中,不仅可以放置控件,还可以放置一些运行期间不可视的组件,这些不可视组件集中地实现了一些特殊的功能。
窗体和组件的关系非常密切。从视觉的角度来看,窗体就像一个容器,
其中包容了可视组件和不可视组件。从程序代码的角度来看,一个窗体对应一个源程序文件,其中定义了窗体中所有组件的对象。
相同点:从面向对象编程的角度来看,所有组件都是 TComponent类派生类的一个对象。窗体类 (TForm)也是从 TComponent类派生的,所以可以将窗体看成一个特殊的组件。
窗体属性
● biSystemMenu 可以通过点击标题栏左边的图标或在标题栏上单击鼠标右键来显示控制菜单。控制菜单有时也称为系统菜单。
● biMinimize 在标题栏右边显示最小化按钮。
● biMaximize 在标题栏右边显示最大化按钮。
● biHelp 在标题栏右边显示帮助按钮。只有窗体的 B o r d e r S t y l
e 属性设置为 b s D i a l o g 或者窗体属性 B o r d e r I c o n s 中不包括 b i M i n i m i z e 和 b i M a x i m i z e 时,b i H e l p 设置才有效。
(1)属性 BorderIcons用来指定窗体标题栏上的图标,可以设置为下列数值:
● bsDialog 窗体为标准的对话框,边框大小不可以改变。
● bsSingle 窗体具有单线边框,大小不可以改变。
● bsNone 窗体没有边框,也没有标题栏,边界的大小不可以改变。
● bsSizeable 边框大小可变的标准窗体。
● bsToolWindow 风格与 bsSingle相同,只是标题栏比较小。另外,对于这种风格的窗体,属性 BorderIcons中设置的 biMinimize和
biMaximize并不起作用。
● bsSizeToolWin 风格与 bsSizeable相同,只是标题栏比较小。对于这种风格的窗体,属性 BorderIcons中设置的 biMinimize和
biMaximize也不起作用。
(2)属性 BorderStyle用来设置窗体的外观和边框,可以指定为下面的数值:
用来指定窗体标题栏中的说明文字。
通常,对于 Wi n d o w s 系统中的多文档界面 ( M D I )应用程序,当主框架窗口中的子窗口以最大化显示的时候,应用程序的标题栏中显示的内容为
,<应用程序名 > - <打开的文档名 >”;
当子窗口以非最大化窗口显示的时候,主框架窗口中只显示应用程序的名称,子窗口有自己的标题栏,其中显示该窗口打开的文件名。
所以,当窗体的显示方式发生了改变后,应该立即改变标题栏中的内容。
(3) Caption属性属性 F o n t 用来设置窗体中文字的字体、颜色和字号等。
如果将窗体中组件的属性 P a r e n t F o n t 设置为 Tr u e,那么该组件的字体设置就与其父级窗体的字体设置完全一样了。
所以在程序设计的时候,为了保持整个系统风格的统一,应该使工程中的窗体风格尽量一致,可以先设置窗体的 F o n t 属性,然后将窗体中所有组件的 P a r e n t F o n t 属性设置为 Tr u e 就可以了。
一般不要单个地对窗体中的组件进行 F o n t 属性的设置。
(4) Font属性通常,应该在系统开发的设计阶段就将整个工程中所有窗体的名称确定,
然后在编程阶段根据设计文档修改窗体的 N a m e 属性。
一般情况下,不要在程序运行期间通过代码修改 N a m e 属性。
(7) Name属性属性 N a m e 用来标志工程中的窗体
● poDesigned 窗体显示的位置和大小与设计期间的一致。
● poDefault 窗体每次显示时,与上次比较,往右下角移动了一些位置;
窗体的高度和宽度由 Windows决定。
● poDefaultPosOnly 窗体以设计期间的大小显示,窗体显示的位置较上次向右下角移动了一些。如果窗体以设计时的大小不可以在屏幕上完全显示,就移动到屏幕的左上角显示。
● poDefaultSizeOnly 窗体以设计期间的位置显示,窗体的大小由
Windows决定。
● poScreenCenter 窗体以设计期间的大小显示,窗体显示的位置总在屏幕的中间。考虑多个监示器时位置的调整。
● poDesktopCenter 窗体以设计期间的大小显示;窗体显示的位置总在屏幕的中间。不考虑多个监示器时的调整。
(8) Position属性属性 P o s i t i o n 用来描述窗体的大小和显示的位置。
可以是下列数值:
● wsNormal 窗体以普通状态显示 (既不是最大化状态,也不是最小化状态 )。
● wsMinimized 窗体以最小化状态显示
● wsMaximized 窗体以最大化状态显示
(9) WindowsState属性属性 Wi n d o w s S t a t e 用来描述窗体显示的状态,可以取下面的三个数值之一:
二、组件在 D e l p h i 编程的过程中,要经常使用到组件。通过可视组件,可以在窗体中方便地构建与用户交互的界面。另外一些不可视的组件可以为程序增加许多强大的功能。在 D e l p h i 集成开发环境的组件栏中,按照功能分类罗列了大量的组件,熟悉它们可以提高开发程序的进度。此外,还可以根据需要,调整组件栏中组件的位置,或者在组件栏中添加、
删除组件,还可以为了满足一些特殊需求而创建新的组件,并把它们添加到组件栏中。
● Standard:标准 Windows控件、框架、菜单等
● Additional:一些专用的 Windows控件
● Wi n32,32位 Windows系统中的公用控件
● System:进行系统操作的组件(包括定时器、多媒体和 DDE等)
● Data Access,操作数据库的组件,如访问数据库、表格、查询和报表等
● Data Controls,进行数据库控制的组件
ADO通过 ActiveXData Objects访问数据库的组件
● InterBase:提供与 InterBase直接联接的组件
● MIDAS:开发多层数据库应用程序的组件
1,组件介绍
● Internet Express:开发 Internet Express应用程序 ( We b 服务器应用程序和客户端多层数据库应用程序 )的组件
● Internet:开发 Web服务的应用程序
● FastNet,提供 I n t e r n e t 操作的一些组件
Decision Cube为应用程序提供多维数据分析的组件
● QReport,快速报表组件
● Dialogs Windows:通用对话框组件
● Win 3.1,提供与 Windows 3.1 兼容的一些组件
● Samples:一些定制组件的例子
● Servers:通用 C O M 服务器组件向窗体中添加组件
删除窗体中的组件。
调整组件的大小和位置。
设置可视组件的 Ta b O r d e r 。
组件的锁定和解锁。
设置窗体中组件的属性。
创建组件的事件处理过程。
2,在窗体中使用组件在应用程序的界面上,往往需要用户输入一些文字,或者以一定的格式将文本显示给用户,文本组件包括以下的一些组件:
3,文本组件
(1) Edit组件,可以显示、编辑单独的一行文本
(2) Memo组件,可以显示、编辑多行文本
(3) MaskEdit组件,可以显示、编辑具有指定格式的文本,如 6 位数字的邮政编码、固定格式的电话号码等
(4) RichEdit组件,可以显示、编辑具有丰富文本格式 (Rich Text Format)
的文件,如,r t f 文件文本组件属性介绍
(1) C h a r C a s e 属性可以强迫组件中的文本全部为大写字母、全部为小写字母或不强迫改变大小写。
E d i t 组件具有 C h a r C a s e 属性。然而 T M e m o 类与 T R i c h E
d i t类就没有 C h a r C a s e 属性。
(2)Te x t (或 L i n e s )属性可以在设计阶段就赋予组件显示的内容。对于 E d i t 组件和 M a s k E
d i t 组件,在对象编辑器中列举了 Te x t 属性,对于 M e m o 组件和
R i c h E d i t 组件却没有列举,而改成了 L i n e s 属性。实际上 M e
m o 组件和 R i c h E d i t 组件同样具有 Te x t属性,可以通过代码改变 Te x t 属性的值。
(3) ReadOnly属性指定用户是否可以修改组件中的内容。
默认值为 F a l s e,即用户可以修改组件中的内容
(4)MaxLength属性限制每一行最多可包含的字符数,默认值为零,表示不由应用程序来限制每行的字符数,而是由操作系统来确定的。
(5) HideSelection属性设置当组件失去焦点时是否高亮度显示选中的文本。
(3) ReadOnly属性指定用户是否可以修改组件中的内容。
默认值为 F a l s e,即用户可以修改组件中的内容
(4)MaxLength属性限制每一行最多可包含的字符数,默认值为零,表示不由应用程序来限制每行的字符数,而是由操作系统来确定的。
(5) HideSelection属性设置当组件失去焦点时是否高亮度显示选中的文本。
(6),注意事项
● AutoSelect 属性可以设置当 E d i t 组件获得输入焦点时,是否自动选中所有的文本。
● PasswordChar 属性可以将用户输入的所有字符以同一个字符显示。
● Edit 组件最常用的事件 (也是默认事件 )为 O n C h a n g e,也就是当 E
d i t 组件中的文本发生改变的时候,该事件的处理过程执行。
● 在一些对话框中可以见到这种情况:在一个编辑框中输入字符的时候,
另一个编辑框中的内容自动发生改变。只要在第一个编辑框的 O n C h a n
g e 事件的处理过程中改变第二个编辑框的 Te x t 属性就可以实现上述过程。
(1)使用 Edit注意事项
(2)使用 Memo注意事项对一些比较长的文本内容可以利用 Memo 组件来显示、编辑。
可以通过 Te x t 属性来存取文本内容。
可以通过 M o d i f i e d 属性来确定文本内容是否发生了改变。
Memo 组件没有从 T C u s t o m E d i t 类继承 A u t o S e l e c t 属性,
所以不可以使用该属性。
(3)使用 MaskEdit注意事项可以通过 E d i t M a s k 属性来设置输入的格式。
单击 E d i t M a s k 属性右面的省略号按钮,将弹出 Input Mask Editor
对话框,在其中可以方便地设置需要的输入要求和格式。
通常可以先在右面的 Samples Masks 中选择一项,然后在 Input Mask 中进行修改。
(4)使用 RichEdit注意事项如果 P l a i n Te x t 属性设置为 Tr u e,则在 R i c h E d i t 组件中显示
RT F 文件的时候,将格式标记以普通文本的方式显示出来。
如果 P l a i n Te x t 属性设置为 F a l s e,则根据 RT F 文件中的格式设置来显示。通常将 P l a i n Te x t 属性设置为 F a l s e 。
通过方法 L i n e s,L o a d F r o m F i l e 和 L i n e s,S a v e To F i l e
可以方便地存取 RT F 文件。
4,特殊输入控件为滚动条组件。如果一个窗口中的内容一次显示不完,可以通过滚动条浏览不同的内容。
(1) ScrollBar组件:
Kind 取值可以是:
sbHorizontal 滚动条是水平方向的。
sbVertical 滚动条是垂直方向的。
Max,M i n 确定滚动条表示数值的范围,类型为 I n t e g e r 。
Large Change,SmallChange可以设置滚动条数值改变的大小。
Large Change表示滑动按钮在滚动条上的位置发生比较大的变化时的数值,
SmallChange则表示滑动按钮在滚动条上的位置发生比较小的变化时的数值。
可以从一个连续的范围内选择一个数值
(2) ScrollBar组件:
Frequency属性表示每隔几个数值显示一个刻度。
LineSize 属性与 P a g e S i z e 属性对应,表示比较小的变化时位置的改变。如通过按下 ↑,↓,← 或 → 等键后位置的改变。
PageSize 属性表示比较大的变化时位置的改变。如通过按下 P a g e U p
( P g U p )或 P a g e D o w n ( P g D n )等键后位置的改变。
SliderVisible属性用来设置是否显示滑动按钮。
ThumbLength 属性表示滑动按钮的宽度 (或高度 )。
Ti c k M a s k 属性用来指定标尺显示的位置。可以为下面的三个数值:
tmBottomRight 标尺的位置的右面 (或下面 )。
tmTopLeft 标尺的位置的左面 (或上面 )。
tmBoth 在 Tr a c k B a r 组件两边都显示标尺。
在 U p D o w n 组件中通过鼠标点击上下箭头可以改变相关联的组件 (如 E
d i t 组件 )中的数值
(3) UpDown组件:
Assosiate 属性指定与 U p D o w n 组件关联的组件,可以通过下拉的组合框进行选择。
Increment 属性指定通过 U p D o w n 组件而每次增加或减少的步长。
Orientation 属性确定组件的方向,可以取下面的两个值之一:
udHorizontal 水平方向,箭头左右指向。
udVertical 垂直方向,箭头上下指向。
Thousand 属性设置当数值超过 9 9 9 时,是否在千位后显示一个逗号。
Wrap 属性可以设置相关联的组件中的数值是否循环变化。如在最大值的时候,再按上箭头,则相关联的组件中数值变为最小值。
H o t K e y 组件可以在设计阶段指定热键,也可以在运行期间改变
(4) HotKey组件:
5.按纽组件
B u t t o n 组件为普通的按钮组件
B i t B t n 组件为图形按钮组件
S p e e d B u t t o n 组件为加速按钮组件,可以组成工具栏
C h e c k B o x 组件为复选按钮组件,可以组成多项选择
R a d i o B u t t o n 组件为单选按钮组件,可以在多个条件中选择唯一的一个
To o l B a r 组件为工具栏组件。可以按列来排列按钮或其他组件,同时自动调整它们的大小和位置
C o o l B a r 组件为一种更灵活的工具栏组件在使用普通按钮组件的时候应注意:
如果某个按钮的 Default属性设置为 True,则在该视图中按下回车键
( E n t e r )后,将执行该按钮的 O n C l i c k 事件的处理过程。对于有些组件如 R i c h E d i t 等,将不会产生默认按钮的 O n C l i c k事件。
通常在一个窗口中只设置一个默认按钮。
(1) Button组件:
在加速按钮上可以同时显示图形和文字,用法与位图按钮很相似。
Flat属性可以使按钮平面化,和 Transparent(透明)属性共同使用可以实现多媒体的透明按钮。
特点:基本上综合了前面两种按钮的特性,是一种方便的通用按钮。
(2) SpeedButton组件:
可以通过 Alignment属性设置复选按钮上文字的位置。
如果复选按钮为三态的,也就是可以表达“选中”、“未选中”和
“部分选中” (灰色 )的概念时,可以将 AllowGrayed属性设置为 True。
可以在设计阶段就设置好复选按钮的状态。通过 Checked属性可以将复选按钮设置为“选中”和“未选中”状态,通过 State属性可以将复选按钮设置为“选中”、“未选中”或“部分选中”。
在同一个窗体中,尽量将不同的复选按钮分组使用,将具有相同性质的复选按钮放在一起。
(3) CheckBox组件:
如果自己制作位图按钮图形,可以将位图保存在,bmp文件中,在设计阶段就可以通过 Glyph属性将图形显示在位图按钮上。
采用 Delphi指定的一组默认图形,可以通过 Kind属性来设置。具体取值可以为 bkCustom,bkOK,bkCancel,bkHelp,bkYes,bkNo、
bkClose,bkAbort,bkRetry,bkIgnore和 bkAll等,它们分别具有明显的意义。对于自己制做图形的位图按钮,Kind属性要设置为
bkCustom 。
(4) Bitbtn组件:
通常在使用单选按钮时,总是将其进行分组。在同一组中,只能同时选中一个按钮,其余按钮自动取消选中。
在实现单选按钮的分组时,可以有两种方法:
利用分组框组件 (GroupBox)和单选按钮组件 (RadioButton)实现。
首先向窗体中添加分组框,然后向分组框中添加单选按钮。这样,同一个分组框中的单选按钮就自动成为一组。可以通过 RadioButton组件的 Checked属性来确定哪一个单选按钮被选中。
利用单选按钮分组框 (RadioGroup)实现。可以通过 ItemIndex属性来确定选中哪一个单选按钮。
(5) RadioButton组件:
5.列表组件
ListBox组件可以显示一系列字符串,用户可以选中其中的一个或多个
ComboBox组件为组合框组件。组合框由一个编辑框和一个下拉式列表框组成,可以从多个列表条目中选择一个。
TreeView组件可以显示具有树型层次的数据。
ListView组件可以显示一些列表的条目,可以按大图标、小图标、列表或详细资料等四种方式显示。
ImageList组件是对位图进行管理的不可视组件。
CheckListBox为复选按钮列表框组件,在列表框中可以有一列或多列复选按钮。
DateTimePicker组件可以实现日期和时间的快速输入。
可以在设计阶段改变 Items属性来预先设置列表框的内容,同时也可以在运行期间通过代码改变列表框的内容。
例如:
向列表框中增加条目:
ListBox1.Items.Add(‘增加的新条目’ );
删除当前选中的一个条目:
ListBox1.Items.Delete(ListBox1.ItemIndex);
清除所有的条目:
ListBox1.Clear;
如果将 ListBox组件的 MultiSelect属性设置为 True,就可以一次选中多个条目。
如果将 ListBox组件的 Sorted属性设置为 True,可以自动将列表框中的字符串排序。
(1) ListBox组件:
组合框有五种类型,可以通过 Style属性来设置,
csDropDown:在组合框的编辑框中可以输入,同时下拉式列表框是一组具有等高度的字符串
csSimple:在只有一个编辑框显示,可以在编辑框中输入字符串,也可以通过上、下箭头键改变编辑框中的内容
csDropDownList在组合框的编辑框为只读的,而且编辑框中的内容只能在从列表框中选择
csOwnerDrawFixed在组合框由一个只读编辑框和条目高度相等的列表框组成,条目的高度由属性 ItemHeight 确定
csOwnerDrawVariable在组合框由一个只读编辑框和列表框组成,
条目的高度可以不同通过属性 D r o p D o w n C o u n t 可以改变列表框显示条目的个数,
默认值为 8 。当列表框中的条目大于 D r o p D o w n C o u n t 时,将会在列表框右面自动出现一个滚动条。
(2) ComboBox组件:
树的生成可以在设计阶段进行,也就是改变 Items属性。单击 Items
属性右面的省略号按钮,在弹出的 TreeView Items Editor 对话框中可以方便地生成一个树。
一般在树上的每个条目前会有一个小图标。有时当该条目被选中时,
会显示另一个小图标。在 Delphi中,这些小图标由 ImageList组件进行统一管理,然后在 TreeView 组件的 Images属性中选择一个
ImageList组件,接着具体设置每个条目的 ImageIndex属性就可以选择 ImageList组件中相应的图标了。
如果将 RightClick属性设置为 True,则在树的某个条目上单击鼠标右键,也可以将该条目选中。
在程序运行期间,可以动态地改变树的内容。可以通过 TreeView组件 Items属性的 Add,AddChild,Delete函数等实现。
通常要编写 TreeView 组件的 OnChange事件的处理过程,也就是在树上选择了不同的条目后,执行该事件的处理过程。
(3) TreeView组件:
在 Windows的资源管理器中,采用了 ListView组件显示一定目录下的文件信息。
使用时候应注意:
在 ListView中也有一些图标,添加图标的方法与 TreeView 组件一样,
也是先定义一个 ImageList组件,再将 ListView组件的 LargeImages、
SmallImages和 StateImages 等属性与对应的 ImageList组件关联。
通过对 ListView组件的 Columns属性进行设置,可以确定将要显示的列数,并且可以为每一列指定文字的对齐方式、显示的宽度、图标索引号等。
对 ListView组件的 Items属性进行设置,可以向组件中预先增加一些记录。
通过 ViewStyle属性设置显示方式:
vsicon,vslist,vsreport,vssmallicon
(4) ListView组件:
I m a g e L i s t 组件主要用来对窗体中的图标进行管理,统一分配索引号,然后提供给 Tr e e Vi e w组件,L i s t Vi e w 组件等通常应将 M a s k e d 属性设置为 T r u e,这样,图标中的背景框就不显示出来,只显示图标中的必要部分;否则,显示的图标将是一个矩形图形,背景色 (比如青色 )也将显示出来。
(5) ImageList组件:
可以通过 CheckListBox组件的 Items属性,在设计阶段添加、修改列表内容。
在运行期间,可以通过下面的代码对列表内容进行修改:
1) 增加一个新的复选列表条目:
CheckListBox1.Items.Add(‘复选列表条目’ );
2) 在索引号为 0 的复选列表条目前的方框中显示一个勾号:
CheckListBox1.Checked[0]:=True;
3) 判断索引号为 1 的复选列表条目是否被选中,也就是该条目被高亮度显示:
if (CheckListBox1.Selected[1]) then ShowMessage('条目 1 被选中’ ) ;
(6) CheckListBox组件:
D a t e TimePicker 组件可以实现日期或者事件的快速输入。
使用的时候应注意:
1) 如果 K i n d 属性设置为 d t k D a t e,则输入的是日期;如果 K i
n d 属性设置为 d t k Ti m e,则输入的是时间。
2) 在输入的是日期的情况下,修改 Date Format属性可以设置日期的格式,有两种格式:
d t L o n g (长日期型 )和 d t S h o r t (短日期型 )
(7) DateTimePicker组件:
5.信息反馈组件
L a b e l 组件上可以显示一个只读的字符串
P r o g r e s s B a r 组件为进度条组件,可以动态地显示一个过程的进度
S t a t u s B a r 组件为状态条组件,在其中可以显示一些说明信息如果一项工作进行的时间超过了几秒钟,就需要以一定的方式告诉用户:
程序正在运行,系统没有死机,请等待。
进度条组件 (ProgressBar)可以方便地实现上述功能通常,我们必须知道整个工作的量,然后在对话框中或者状态条中显示 ProgressBar组件,根据工作的进度,动态地改变 ProgressBar组件的 Position属性。另外,ProgressBar具有 Max和 Min 属性,用来表示进度条所表示的最大值和最小值。通常,Max设置为 100,Min
设置为 0,Position属性的初始值设置为 0。这样,就将整个工作分成了 100份,每完成 1份,就将 Position属性的数值加 1 。
(1) ProgressBar组件:
如果一项工作进行的时间超过了几秒钟,就需要以一定的方式告诉用户:
程序正在运行,系统没有死机,请等待。
进度条组件 (ProgressBar)可以方便地实现上述功能通常,我们必须知道整个工作的量,然后在对话框中或者状态条中显示 ProgressBar组件,根据工作的进度,动态地改变 ProgressBar组件的 Position属性。另外,ProgressBar具有 Max和 Min 属性,用来表示进度条所表示的最大值和最小值。通常,Max设置为 100,Min
设置为 0,Position属性的初始值设置为 0。这样,就将整个工作分成了 100份,每完成 1份,就将 Position属性的数值加 1 。
(1) ProgressBar组件: