本章要点:
组件的基本概念
窗体和按钮组件的使用
标签和编辑组件的使用
列表框和组合框组件的使用
其他组件的使用第 7章 常 用 组 件
7.1 窗体和按钮组件组件( Components)是在工程设计时可以使用、处理的可视对象,是那些用于生成用户界面以及为程序提供附加功能模块的对象。 Delphi 7.0提供了大量的可视组件,可以利用第三方组件的接口,丰富 Delphi 7.0应用程序,本章介绍 Delphi 7.0的常用组件,在第 7章进一步介绍基于组件的开发。
打开 Delphi 7.0的默认界面,在 Component palette中选择相关组件添加到默认表单中。但有时会发生在组件面板中找不到需要的组件图标的情况,
不妨试试下面的操作。单击 View菜单,选择 Component list菜单项将出现如图 7-1所示对话框。
图 7-1 Components 对话框
7.1.1 窗体组件( 1)
窗体是可以放置各种组件的一个窗口,在运行时就是一个窗口,它是应用程序的主要界面,它的友好直接影响程序的使用和质量 。 接下来介绍窗体的常用属性和事件 。
1,常用属性
Name属性,Formstyle属性,Icon属性,Visible属性
2,常用事件
OnCreate事件,OnKeyDown事件,OnDestoy事件
【 例 7-1】 窗体用法。
进入 Delphi 7.0集成开发环境,对默认的表单的一些属性进行设置,
如下所示:
name,MainForm
Caption:主窗体
Formstyle,fsMDIForm
7.1.1 窗体组件( 2)
单击 File,选择 New后单击 Form,在出现的另一个表单中作如下修改:
name,SubForm
Caption:子窗体
Formstyle,fsMDIChild
为 SubFrm表单中 OnClick事件添加如下代码:
procedure TSubForm.FormClick(Sender,TObject);
begin
Subform.Color:=clred;
end;
单击 Run菜单运行程序,当单击子窗体时,发现子窗体的颜色发生了改变。程序运行结果如图 7-2所示。
注意,由于只是为了演示组件的功能,所以对程序本身实现的意义并不关心,这一点需要注意。
图 7-2 窗体应用
7-2 窗体应用
7.1.2 按钮类组件 (1)
在 Delphi 7.0中,常用的按钮类组件可分为三种:普通按钮 ( Button) 组件,位图按钮 ( BitBtn) 组件和加速按钮 ( Speed Button) 组件 。 下面介绍它们的用法 。
1,Button按钮组件常用属性与事件:
ShowHint属性 Hint属性 Default属性 Cancel属性 ModalResult属性
OnClick事件:发生下列情况触发该事件。
2,BitBtn 按钮组件位图按钮组件位于组件面板的 Additional标签页,与 Button组件所不同的是多了一个位图符号在按钮上,该组件用于创建一个其上带有位图的按钮,其中大部分属性和事件与 Button一致,这里仅介绍它所独有的属性。
常用属性与事件:
Kind属性 Glyph属性 NumGlyphs属性 Layout属性 OnClick事件
7.1.2 按钮类组件 (2)
3,SpeedButton加速按钮组件加速按钮组件位于组件面板的 Additional标签页,常常被放在
Panel组件上,用于设计工具栏,它和 Bitbtn组件非常相似,也可以显示图像和文本,但通常只显示图像,它的特殊属性如下。
常用属性与事件:
AllowAllUp属性 Down 属性 GroupIndex属性 MouseIncontrol属性
【 例 7-2】 针对上面介绍的内容来编写一个小的程序。目的是熟练按钮的有关属性和方法,程序本身没有实际意义。
进入 Delphi 7.0环境中,设计如图 7-3所示窗体。
图 7-3 按钮类实例程序
该窗体上并排添加了三个名为 sb1,sb2,sb3的
SpeedButton按钮、一个名为 B1的 Button按钮和一个名为 Bb1的 BitBtn按钮,分别如下设置它们的属性值:
7.1.2 按钮类组件 (3)
Sb1.GroupIndex:=1;
Sb1.Flat:=true;
Sb1.Hint:=’this is a speedbutton’;
Sb1.ShowHint:=true;
Sb1.AllowAllUp:=False;
Sb2.GroupIndex:=1;
Sb3.GroupIndex:=1;
B1.caption:=’next’;
Bb1.Kind:=bkClose;
使用 Picture Editor分别为 sb1~sb3按钮的 Glyph属性设置一个对应的位图文件,这些位图文件分别在 delphi 7.0\Domos\Doc\Graphex目录下,当然,可以自己选择合适的位图文件。
在 B1按钮的 OnClick事件中添加如下代码,注意 i变量在 implementation之前应该先给予定义,var i:integer=0;
7.1.2 按钮类组件 (4)
在 B1按钮的 OnClick事件中添加如下代码,注意 i变量在 implementation
之前应该先给予定义:
var i:integer=0;
procedure TForm1.B1Click(Sender,
TObject);
begin
if i=0 then
begin
sb1.Down:=true;
i:=1;
end
else if i=1 then
begin
程序运行过程中,可以通过连续单击 next按钮实现三个 SpeedButton的按下动作,按 Close按钮退出程序。
sb2.down:=true;
i:=2;
end
else if i=2 then
begin
sb3.Down:=true;
i:=0;
end
end;
7.2 文本类组件的使用文本类组件是进行界面设置中最常用的组件,本节主要介绍标签组件和编辑框组件 。
7.2.1 标签组件标签组件本身不是窗口,因此已没有窗口句柄,也不会有输入焦点,但可以把它与标准的组件关联,下面介绍该组件中的一些常用属性。
Alignment属性,Autosize 属性,Focuscontrol属性,Transparent属性、
WordWrap属性,ShowAccelChar属性:
7.2.2 编辑框组件
1,Edit组件位于组件面板的 Standard标签页,用户可以在其中输入单行文字或数据,同时可能用于显示信息,下面介绍它的常用属性及主要的事件和方法。
7.2.2 编辑框组件 (1)
AutoSelect 属性,CharCase 属性,MaxLength属性,Passwordchar属性、
Text属性
Clear方法,CopyToClipboard 方法,CutToClipboard 方法
PasteFromClipboard 方法,OnChange 事件,当编辑框中的内容发生改变时,将触发这个事件。
2,Memo 组件
Memo组件位于组件面板 Standard标签页,Memo组件中的属性和 Edit组件存在着许多相似之处。不同的是,Memo组件中可以显示和编辑多行文本,下面介绍它的常用属性及事件和方法。
Lines属性,Maxlength属性,ScrollBar 属性,WantReturns属性、
WantTabs属性,Clear方法,Add方法,SelectAll 方法、
ClearSelection方法
7.2.2 编辑框组件 (2)
3,MaskEdit 组件该组件位于组件面板的 Additional标签页,功能与 Edit组件相似,用于显示和编辑具有指定格式的文本,如特定格式的时间等。
EditMask属性图 7-4 Input Mask Editor对话框
4,LabelEdit组件位于组件面板的 Additional标签页,它的作用相当于使用 Label组件和
Edit组件的组合,常用属性如下。
EditLabel,LabelPosition,LabelSpaceing
7.2.2 编辑框组件 (3)
【 例 7-3】 文本类组件的使用。
进入 Delphi 7.0环境,创建 2个 Button按钮,1个 Edit组件和 1个 Memo组件,
如图 7-5所示。
在 Form1的 Oncreate事件中添加如下代码:
procedure TForm1.FormCreate(Sender,TObject);
begin
form1.Caption:='文本类组件演示程序 ';
edit1.Text:='';
edit1.TabOrder:=0;
memo1.TabOrder:=1;
memo1.ScrollBars:=ssVertical;
button1.TabOrder:=2;
button2.TabOrder:=3;
memo1.Lines.Clear;
button1.Caption:='&Clear';
button2.Caption:='&Add';
end;
图 7-5 文本类组件使用
7.2.2 编辑框组件 (4)
在 Edit1组件的 Onchange事件中加入如下代码:
procedure TForm1.Edit1Change(Sender,TObject);
begin
memo1.Lines.Add(edit1.Text);
end;
分别在 Button1,Button2的 Onclick事件中添加如下代码:
procedure TForm1.Button1Click(Sender,TObject);
begin
memo1.Lines.Clear;
temp:=temp+edit1.Text;
edit1.Text:='';
end;
procedure TForm1.Button2Click(Sender,TObject);
begin
memo1.Clear;
temp:=temp+edit1.Text;
memo1.Text:=temp;
end;
7.3 列表框组件和组合框组件在 Windows应用程序中,除了一些无规律数据的输入外,大量地使用了特定数据的录入和编辑 。 对于这些有规律的数据,就可使用列表框和组合框组件 。 列表框和组合框组件对于减少用户输入,增加程序的易用性方面都有极大的帮助 。 接下来介绍这两个组件的比较重要和常用的属性,事件和方法 。
7.3.1 列表框组件即 ListBox组件,位于组件面板的 standard标签页,它们以滚动列表的形式显示条目以供用户选择,极大减轻了用户对应用程序的操纵。常用属性:
Colums属性,ExtendedSelect属性,Items属性,ItemHeight属性
ItemIndex属性,MultiSelect属性,Sorted属性,Style属性
【 例 7-4】 列表框的使用。
进入 Delphi 7.0环境后在默认表单中添加 2个 Memo组件和 2个
Label组件。
在 form1的 Oncreate事件中添加如下代码:
7.3.1 列表框组件 (1)
procedure TForm1.FormCreate(Sender,TObject);
begin
form1.Caption:='组合框演示程序 ';
Listbox1.Sorted:=true;
Listbox1.Font.Style:=[fsBold];
Listbox2.Sorted:=true;
ListBox2.Font.Style:=[fsBold];
Listbox1.Items.Add('The C Programming');
Listbox1.Items.Add('Operating System');
Listbox1.Items.Add('Data Structure');
Listbox1.Items.Add('Application of Database ');
Listbox1.Items.Add('Computer Network Principle');
Listbox1.Items.Add('Software Engineering');
end;
在 Listbox1组件和 Listbox2组件的 Onclick事件中分别添加如下代码:
procedure TForm1.ListBox1Click(Sender,TObject);
var i:Integer; str,st:string;
begin
7.3.1 列表框组件 (2)
i:=Listbox1.ItemIndex;
str:=Listbox1.Items.Strings[i];
st:=Listbox2.Items.Text;
if strpos(pchar(st),pchar(str))=nil then
Listbox2.Items.Add(listbox1.Items.Strings[i]);
end;
procedure TForm1.ListBox2Click(Sender,TObject);
var i:Integer;
begin
i:=Listbox2.ItemIndex;
listbox2.Items.Delete(i);
end;
程序运行结果如图 7-6所示。 图 7-6 组合框演示程序注意,上面的程序可以通过双击左边 Selection Items栏中作选的课目而将其添加到右边的 Result栏中。如果右边已经有的则不会再添加。同样,可以在右边通过双击将该课目去掉。
7.3.2 组合框组件 (1)
DropDownCount属性,Dropped Down属性,Style属性、
OnDropDown事件。
列表框虽然可以提供多个选项供用户选择,但对于大小有限的窗口来说,
这是一笔不小的开销 。 为了最大限度地节省应用程序窗口空间,Delphi 7.0提供了组合框组件 。 与列表框相比,组合框能有效地利用屏幕空间 。
接下来介绍其独特的一些常用的属性及主要的事件和方法 。
【 例 7-5】 组合框的使用。
进入 Delphi 7.0环境后在默认表单中添加 1个 Label组件和 2个
ComboBox组件。
在 form1的 Oncreate事件中添加如下代码:
procedure TForm1.FormCreate(Sender,TObject);
begin
Form1.Label1.Caption:='汉字 ';
Form1.Label1.Font.Size:=8;
Form1.ComboBox1.Text:='宋体 ';
Form1.Combobox2.Text:=inttostr(label1.Font.size);
end;
7.3.2 组合框组件 (2)
在 ComboBox1组件和 ComboBox2组件的 OnChange事件和 OnDropDown
事件中分别添加如下代码:
procedure TForm1.ComboBox1Change(Sender,TObject);
begin
Form1.Label1.Font.Charset:=GB2312_CHARSET ;
Form1.Label1.Font.Name:=Form1.ComboBox1.Text;
end;
procedure TForm1.ComboBox2Change(Sender,TObject);
begin
Form1.Label1.Font.Size:=strtoint(Form1.ComboBox2.Text);
end;
procedure TForm1.ComboBox1DropDown(Sender,TObject);
begin
with combobox1 do
begin
items.BeginUpdate;
items.Clear;
7.3.2 组合框组件 (3)
sorted:=true;
items:=screen.Fonts;
items.EndUpdate;
end;
end;
procedure TForm1.ComboBox2DropDown(Sender,TObject);
var i:Integer;
begin
with combobox2 do
begin
items.BeginUpdate;
items.Clear;
i:=1;
while i < 80 do
begin
Items.Add(inttostr(i));
i:=i+2;
end;
items.EndUpdate;
end;
end;
程序执行结果如图 7-7所示。
图 7-7 组合框演示程序
7.4 对话框组件和对话框函数
7.4.1 常用对话框组件
Delphi 7.0提供了几个标准对话框组件:打开、存储文件、设置字体和颜色、查找、打印、设置打印机组件等。它们都位于组件面板的
Dialogs标签页;当然,这些对话框的外观仍然取决于用户使用的
Windows版本,在程序执行过程中调用相关组件的 execute方法,就会激活相应的对话框。
1,打开文件对话框组件和保存文件对话框组件
OpenDialog组件和 SaveDialog组件有许多相似之处,不同是
OpenDialog组件用于提供一个打开对话框,供用户进行文件的选择和打开,而 SaveDialog组件用于保存文件。 OpenDialog组件常用的属性值如下几种。
DefaultEXT属性,Filter属性,InitialDir属性,Title属性
7.4.1 常用对话框组件
2,字体对话框组件和颜色对话框组件即 FontDialog组件和 ColorDialog组件。 FontDialog组件封装了
Windows的字符集,可以提供一个字体对话框,供用户设置文本的字体、
字号; ColorDialog组件用于提供一个标准的颜色选择对话框,用户可以通过它来选择颜色。它们的常用属性如下:
MaxFontSize属性,MinFontSize属性,Options属性,Color属性。
3,打印选项组件和打印设置组件即 PrintDialog组件和 PrintSetupDialog组件。 PrintDialog封装了标准 Windows打印选项对话框,用于向打印机传递打印任务;
PrintSetupDialog组件用来完成打印设置任务。
4,文本搜索组件和文本替换组件即 FindDialog组件和 ReplaceDialog组件。 FindDialog组件封装了标准 Windows的文本搜索对话框,允许用于在文件中查找一段文字; ReplaceDialog组件包含了 FindDialog的所有功能,用来完成文本的替换任务。接下来介绍这两个组件常用的属性:
FindText属性,OnFind事件,OnClose事件。
7.4.2 对话框函数 (1)
1,ShowMessage()函数用于在程序运行过程中显示一个包含字符串信息的对话框。用户只有对这个对话框进行准确响应后,才能关闭对话框。用法如下:
ShowMessage( const Msg:string);
例如:
Procedure Tform1.Button1click(Sender:TObject);
begin
ShowMessage(‘hello world’);
end;
2,MassageDlg()函数用于在程序运行过程中显示一个包含一个字符串的位图和按钮等信息的对话框,用户只有对这个对话框进行准确响应后,才能关闭对话框,语法如下:
Function MessageDlg(const Msg,string; Atype,TMsDlgType;
Abuttons:
TmsDlgButtons:HelpCtx,longint),word;
其中 TmsDlgType 在 Windows 单元文件中有如下定义:
7.4.2 对话框函数 (2)
Type
TMsgDlgType = (mtWarning,mtError,mtInformation,mtConfirmation,
mtCustom);
分别表示在该显示对话框中将显示的标题和位图信息:警告、错误、信息、确认,以及按照调用该函数的应用程序名。
3,InputBox()函数该函数用于在程序运行过程中显示一个包含字符串和按钮信息的输入对话框,用户对这个对话框进行准确响应后,才能关闭该对话框,在 Dialogs单元文件中有如下定义:
Function InputBox(const Acaption,Aprounpt,Adefault:string):string;
例如:如下代码可以返回用户输入的字符串,提示窗口如图 7-9所示。
Inputbox('输入 ','input a string ','');
图 7-9 InputBox函数
7.5 菜单组件、工具栏组件和状态栏组件对于一个实际的应用程序来说,菜单栏,工具栏和状态栏是必不可少的部分,接下来分别予以介绍 。
菜单 ManiMenu组件位于组件面板的 standard标签页,可以利用它来创建窗体的主菜单。
7.5.1 菜单组件
1.创建主菜单和子菜单的方法
2,添加菜单命令
3,创建热键方法
4,创建快捷键方法
5,创建分隔符方法注意,在有些子菜单中,如果子菜单项的数目较多,可以把它们分组,设定一些分隔符,这在应用程序的菜单中是非常普遍的。
7.5.2 弹出式菜单组件除了 MainMenu 组件外,还有一种弹出式菜单( PopupMenu)组件,在创建方法上与 MainMenu非常类似,不同的是一般以鼠标的右键或其他快捷键来激活菜单。菜单的位置是在屏幕上“浮动”的,它的位置是根据鼠标的当前位置决定。
可以按照 MainMenu 组件的方法创建 PopupMenu组件的一些菜单项,并将含有该 PopupMenu组件的窗体的 PopupMenu属性设置为 PopupMenu组件的名称。当用户右击窗体时,便显示该弹出式菜单。如图 7-10就是
PopupMenu组件的运行效果。不难发现,使用弹出式菜单可使程序具有与用户更友好的界面。
图 7-10 PopupMenu组件的运行效果
7.5.3 工具栏组件在 Windows应用程序中,工具栏是最常见的 。 它可以将最常用的功能集中在一起,用图标的形式提供快捷的访问方式 。 在 Delphi 7.0中也提供了工具栏 ( ToolBar) 组件,在 Win32组件页中 。 ToolBar组件的属性很多,下面介绍一些常用的属性 。
Align属性,AutoSize属性,ButtonHeight,ButtonWidth属性,Flat属性、
Images属性,List属性,ShowCaption属性,Grouped属性、
ImageIndex属性,Down属性,Style属性
ToolButton组件通过右键单击 ToolBar组件的弹出菜单中的 New Button选项来产生,ToolButton组件的所有按钮图标都由 Imagelist组件来提供。所以
ToolBar工具栏组件要与 Imagelist组件配合使用,有多少个 ToolButton组件就要在 Imagelist组件中装入多少个图标组件。
7.5.4
7.5.4 状态栏组件
Delphi 7.0提供了状态栏组件 ( StatusBar),使用 Delphi 7.0提供的状态栏组件可以全面实现应用程序中状态栏的功能 。 下面介绍状态栏组件的主要属性,事件和方法 。
1,状态栏组件的属性和事件
Align属性,SimplePanel属性,SimpleText属性,SizeGrip属性、
Panels属性。
2,显示面板组件( Status Panel)
显示面板组件并不独立存在,而是依附于状态栏控件存在的。在应用程序窗体中添加状态栏组件后,需要在其中添加显示面板组件,基本操作步骤如下。
首先在窗体中选择状态栏组件,双击后出现显示面板编辑器。然后,
在显示面板编辑器中单击 Add New按钮,将自动添加显示面板。在对象编辑器中,可以对显示面板的属性进行设置。
下面是显示面板在应用程序中需要进行设置的属性。
Alignment属性,Bevel属性
7.6 其他常用组件
1,字符串网格组件也称 StringGrid组件,位于组件面板的 Additional标签页。用于以表格的形式来显示或编辑字符串,主要属性如下。
BorderStyle属性,Cells[Column,Row]属性:,ColCount属性、
RowCount属性。
7.6.1 网格组件
2,绘图网格组件也称 DrawDrid组件,位于组件面板的 Additional标签页。和
StringGrid组件不同的是它可以在行列中显示图形。当要设置或显示网格中的内容时,就需先将该组件的 DefaultDrawing属性设置为 False,
并在 OnDrawCell事件中添加相关代码。
7.6.2 文件目录访问组件
1,DriveComboBox组件驱动器下拉式列表框控件 DriveComboBox显示当前所在的驱动器,并且在执行时允许用户在驱动器之间切换。
2,DirectoryListBox组件目录列表框控件 DirectoryListBox显示当前驱动器内的目录,并且允许用户在程序执行时切换目录。
3,FileListBox组件文件列表框控件 FileListBox显示当前目录中的文件,缺省的设置是显示所有文件。通过改变 Mask属性来设置过滤器,可以适用 DOS的标准通配方式,选择要显示的文件名。当指定多个过滤器时之间用,;”隔开。
Delphi 7.0提供了强大的文件目录访问组件 。 可以针对具体的用途设计自定义的文件对话框 。 在组件面板中的 System页,你将发现这些组件 。 它们是驱动器下拉式列表框 DriveComboBox组件,目录列表框 DirectoryListBox,文件列表框 FileListBox。
7.6.3 其他组件 (1)
1,TabControl组件用于向窗体添加标签。当用户选择不同的标签时,可以在该组件的
OnChange事件中更新其内容。该组件常用属性如下。
Hint属性,TabIndex属性,TabPosition属性,Tabs属性
2,PageControl组件该组件含有一套页面,单击不同的标签可出现不同的页面。它与
TabControl组件不同,TabControl组件只有一个页面,单击不同的标签时组件显示什么内容由程序控制;而 PageControl组件在单击不同的标签时可出现不同的页,每页可以含有自己的内容。
3,ScrollBox组件用于向窗体添加滚动框。当要添加的组件较大或较多时,使用滚动框十分方便。
Kind属性,Visible属性,SmallChange属性,LargeChange属性、
4,TrackBar组件
TrackBar是一个滑块组件。表示在一个选中范围内所处的位置。在程序运行时可拖动滑块或单击滑杆来移动位置。还可以通过按 PageUp和
PageDown键来移动滑块。
Frequency属性,Max属性,Min属性,Orientation属性,Position属性
7.6.3 其他组件 (2)
5,ProgressBar组件是一个进度栏组件。用于反馈应用程序中过程的处理进度。
Max属性,Min属性,Position属性、
6,Timer组件控件面板上的 System控件页,有一个 Timer(计时器)组件,它能够有规律地触发 OnTimer事件,发送信息给应用程序。 Timer的主要属性如下。
Enabled属性,Interval属性
7,UpDown组件含有一对箭头按钮,单击这两个箭头按钮可改变数值的大小。
AlignButton 属性,ArrowKeys属性,Associate属性,Max属性、
Min属性,Position属性
7.7 组件应用(1)
前面介绍了 Delphi 7.0的常用组件,下面通过一个 Word支持的
RTF编辑器来进一步说明组件的综合使用方法。在这个程序中,使用 RichEdit组件,OpenDialog组件,SaveDialog组件、
FontDialog组件和 MainMenu组件。
该程序主要功能如下:
能够进行文件的建立、打开和保存;
能够进行文本的输入和编辑;
能够设置文本的字体和样式。
具体方法如下:
进入 Delphi 7.0环境,在默认表单中添加 RichEdit组件、
OpenDialog组件,SaveDialog组件,FontDialog组件和 MainMenu
组件各一个,如图 7-12所示。
图 7-12 RTF Editor主界面
7.7 组件应用(2)
进入菜单设计器,如表 7-1设置各菜单项 。
文件 (&F) 编辑 (&E) 格式 (&O) 帮助 (H)
打开 (&O)… 撤销 (&Z) 字体 (&F)…
保存 (&S)… -
- 剪切 (&T)
退出 (&X) 复制 (&C)
粘贴 (&V)
-
全选 (&A)
表 7-1 主菜单中各菜单项设置情况
7.7 组件应用(3)
组件 数量 设置
RichEdit组件 1
Anchors,[akLeft,akTop,akRight,akBottom]
Scrollbars,ssBoth
Line,’’
FontDialog组件 1 默认值即可
OpenDialogs组件 1 Filter,*.RTf
SaveDialog组件 1 Filter,*.RTf
各组件设置如表 7-2所示。
程序单元代码见本教程 P125页
按 F9键,程序执行结果如图 7-13所示。 图 7-13 程序执行情况