1、Delphi程序设计教程,2005年 8月,杨长春 主编清华大学出版社 同名教材 配套电子教案,第5章 常用组件,5.1 窗体 5.2 按钮、编辑框和标签5.2.1 Button组件5.2.2 BitBtn组件5.2.3 SpeedButton组件5.2.4 编辑框 Edit5.2.5 Label控件 5.3复选框、单选按钮和单选按钮组5.3.1 CheckBox控件5.3.2 RadioButton控件 5.3.3 RadioGroup 控件,5.4 列表框、组合框 5.4.1 列表框 ListBox 5.4.2 组合框 ComboBox 5.5 滚动条 小结 习题5,5.1 窗体 用户界面
2、是应用系统中直接面对用户的窗体,如图所示。,对象Tree View 对象观察器 主窗体 窗体设计器 代码窗口,1.Tform的主要属性 (1)BorderIcons (2)BorderStyle (3)Caption (4)Font (5)FormStyle (6)Icon (7)Name (8)Position (9)WindowsState 2.Tform 的事件 OnActive 当窗体对象被激活时产生此事件OnClose 当窗体对象被关闭时产生此事件OnCloseQuery 当窗体对象被关闭时产生此事件OnCreate 当窗体对象创建时产生此事件OnDeactivate 当窗体对象变为
3、非激活时产生此事件OnDestroy 当窗体对象被销毁前产生此事件OnHide 当窗体对象被隐藏前产生此事件,OnPaint 当窗体对象客户取刷新时产生此事件OnResize 当窗体对象位置移动时产生此事件OnShow 当窗体对象显示时产生此事件OnKeyDown 键盘按下时产生此事件OnKeyPress 键盘按下时产生此事件OnKeyUp 键盘放开时产生此事件OnClick 鼠标单击事件OnDblClick 鼠标双击事件OnDragDrop 鼠标拖放事件OnDragOver 鼠标拖过事件OnMouseDown 鼠标按下事件OnMouseMove 鼠标移过事件OnMouseUp 鼠标释放事件【
4、例5.1】第一个实例是创建一个颜色渐变的窗体,这个实例实现的过程如下:界面设计通过集成开发环境中的【File】【New】【Application】菜单, 创建一个应用程序,此时应用程序自动生成一个窗体Form1。使用Button组件即可完成界面设计。,程序设计 procedure TForm1.Button1Click(Sender: TObject);/按钮单击事件 var i,j,k:integer;dct:trect; begin if button1.caption=渐变效果 then /判断按钮的执行条件beginbutton1.Caption:=恢复;i:=form1.Width;
5、 /得到窗体的宽度j:=form1.Height; /得到窗体的高度for k:=0 to i do /设置RGB中的一个颜色值begincanvas.Brush.Color:=rgb(255,k,j); /每次画矩形的画刷颜色dct:=rect(i*2,0,(k+1)*2,j); /每次绘制的矩形区域canvas.FillRect(dct); /填充颜色end;end,elsebegin /恢复窗体的颜色i:=form1.Width; /得到窗体的宽度j:=form1.Height; /得到窗体的高度button1.caption:=渐变效果;canvas.Brush.Color:=clBt
6、nFace /画矩形的画刷颜色dct:=rect(0,0,i,j); /绘制的矩形区域canvas.FillRect(dct); /填充颜色end; end 程序运行的效果。,5.2按钮、编辑框和标签 5.2.1 Button控件 Button按钮往往作为一个窗体中某些行为的执行工具,Button按钮位于Delphi 7.0组件板Standard选项卡中,如图所示。1.Button的主要属性 (1)Caption (2)Cancel (3)Default (4)ModalResult 2.Button的事件 OnClick 鼠标单击事件OnMouseDown 鼠标按下事件OnMouseMove
7、 鼠标移过事件OnMouseUp 鼠标释放事件 在下述两种情况下,OnClick事件将被激发: (1)用鼠标单击按钮。 (2)当按钮获得焦点时,按下 键或空格键。,5.2.2 BitBtn控件位图按钮(BitBtn)控件的工作方式与Button控件相似,但可以显示一个彩色的位图(Bitmap)。如图所示。1.BitBtn的主要属性 (1)Glyph (2)Kind (3)Layout (4)Margin (5)Spacing 2.BitBtn的事件 OnClick 鼠标单击事件OnMouseDown 鼠标按下事件OnMouseMove 鼠标移过事件OnMouseUp 鼠标释放事件,5.2.3
8、SpeedButton控件 快速按钮(SpeedButton)是一种可以成组工作的按钮,具有与位图按钮一样将位图显示在按钮表面的功能;还具有与单选按钮一样允许其中一个按钮被选中(按下)的功能;当它单独使用的时候可以像复选框一样具有开关的功能。快速按钮位于Additonal组件板中。如图所示。 1. SpeedButton的主要属性 (1)AllowAllUp (2)Down (3)Flat (4)GroupIdex 2. SpeedButton的事件 OnClick 鼠标单击事件OnMouseDown 鼠标按下事件OnMouseMove 鼠标移过事件OnMouseUp 鼠标释放事件,5.2.4
9、 编辑框 Edit 编辑框(Edit)是一种通用控件,既可以输入文本,又可以显示文本,是应用程序中最常用的控件之一。编辑框控件位于Standard组件板中。如图所示 。1. Edit的主要属性 (1)AutoSelect (2)AutoSize (3)Enable (4)BorderSytle(5)MaxLength (6)PasswordChar (7)ReadOnly (8)SelStart (9)SelText (10)SelLength (11)Text (12)CharCase,5.2.5 Label控件 标签(Label)是Delphi中最常用的输出文本信息的工具。标签控件位于St
10、andard组件板中。如图所示。 1. Label的主要属性 (1)Caption (2)ShowAccelChar (3)AutoSize (4)Alignment (5)Layout (6)WordWrap (7)Transparent (8)FocusControl【例5.2】一个改变窗体隐藏和显示状态的程序 界面设计通过集成开发环境中的【File】【New】【Application】菜单, 创建一个应用程序,此时应用程序自动生成一个窗体Form1。使用Button,label组件即可完成界面设计。,程序设计 procedure TForm1.Button2Click(Sender: T
11、Object); begin form2:=tform2.Create(nil); /使用create方法来创建并完成form2的初始化 form2.Show; /显示窗口form2 end; procedure TForm1.Button3Click(Sender: TObject); begin close; /关闭窗口 end; procedure TForm1.Button1Click(Sender: TObject); begin if label1.Visible=true then /判断标签的显示情况beginlabel1.Visible:=false;button1.Capt
12、ion:=显示;end elsebeginlabel1.Visible:=true;button1.Caption:=隐藏;end; end;,procedure TForm2.Button1Click(Sender: TObject); beginform2.Release; /释放form2所占有的系统资源 end;程序运行的效果,5.3 复选框、单选按钮和单选按钮组 5.3.1 CheckBox控件 复选框(CheckBox)是一个旁边带有文本说明的小方框。CheckBox位于Delphi 7.0组件板Standard选项卡中,如图所示。复选框CheckBox具有选中和未被选中两种状态,
13、未选中状态 ,选中状态 。在运行时,使用鼠标单击复选框可以改变它的状态。复选框还有一种不确定状态,表示既非选中,又非未选中。 1. Label的主要属性 (1)Checked (2)State (3)AllowGrayed 2. CheckBox的事件 CheckBox常用事件和Button控件基本一样是响应鼠标动作的。,5.3.2 RadioButton控件 单选按钮(RadioButton)又称选项按钮,一般总是作为一个组(单选按钮组)的组成部分工作的。单选按钮组中只能单击一个选项,即单选按钮组只允许用户从菜单中选择一个选项。RadioButton位于Delphi 7.0组件板Standa
14、rd选项卡中,如图所示。 1. RadioButton的主要属性 (1)Checked 属性Checked用于表明CheckBox是否被选中。,5.3.3 RadioGroup 控件单选按钮组(RadioGroup)控件巧妙地将一个GroupBox与一组RadioButton组合在一起,可以使用统一地索引号(ItemIndex),为编程提供了方便。RadioGroup位于Delphi 7.0组件板Standard选项卡中,如图所示。 1. RadioGroup的主要属性 (1)Columns 属性Columns用于设置单选按钮组中按钮的列数。范围116,默认值为1。 (2)Items属性Ite
15、ms用于设置各种单选按钮的标题。 (3)ItemIndex单选按钮组中被选中按钮(从0开始)的序号。默认值为-1,表示组中按钮均未被选中。,5.4 列表框、组合框 5.4.1 列表框 ListBox 当列表框不能同时显示所有选择项时,将自动加上一个垂直滚动条,使用户可以上下滚动列表框,以查阅所有的选项。列表框位于组件板Standard选项卡中,如图所示。1. ListBox的主要属性 (1)Items(2)Items(3)Stored (4)Cloumns(5)MultiSelect(6)SelCount (6)Selected (7)IntegralHelght (8)ItemHeight
16、(9)Style,5.4.2 组合框 ComboBox 组合框ComboBox兼有EditBox和ListBox两者的功能,用户可以通过键入文本或选择列表中的项目来进行选择。组合框位于组件板Standard选项卡中,如图所示。 1. 组合框的主要属性 (1)Items(2)ItemsIndex (3)Stored (4)DorpDownCount (5)SelText (6)Style 【例5.3】下面就通过一个实例来理解一下这个组件的应用。在这个例子中,在窗体中创建了5个标签、4个组合框、2个按钮及1个Groupbox组件,示例的创建步骤如下。,界面设计 创建一个新的应用程序,在窗体上添加5
17、个标签、4个组合框、2个按钮及1个Groupbox组件。程序设计 procedure TForm1.FormCreate(Sender: TObject); begincombobox1.Items.Add(IBM);combobox1.Items.Add(AST);combobox1.Items.Add(Compaq);combobox1.Items.Add(长城);combobox1.Items.Add(联想);combobox1.Items.Add(清华同方); combobox2.Items.Add(586/133);combobox2.Items.Add(586/200);combo
18、box2.Items.Add(P/233);combobox2.Items.Add(P/400);combobox2.Items.Add(P/450);combobox2.Items.Add(P/600); combobox3.Items.Add(16MB);combobox3.Items.Add(32MB);combobox3.Items.Add(64MB);combobox3.Items.Add(128MB);,combobox3.Items.Add(256MB); combobox4.Items.Add(2.5GB);combobox4.Items.Add(3.2GB);combobox
19、4.Items.Add(4.3GB);combobox4.Items.Add(9GB);combobox4.Items.Add(15GB); end; /点击确定按钮所触发的事件 procedure TForm1.Button1Click(Sender: TObject); var i:integer;p:string; beginp:=你选的机器配置:+#13;i:=combobox1.ItemIndex;p:=p+机型:+combobox1.Itemsi+#13;i:=combobox2.ItemIndex;p:=p+CPU:+combobox2.Itemsi+#13;i:=combobo
20、x3.ItemIndex;p:=p+内存:+combobox3.Itemsi+#13;i:=combobox4.ItemIndex;p:=p+硬盘:+combobox4.Itemsi;label5.caption:=p; end;,/点击取消按钮所触发的事件 procedure TForm1.Button2Click(Sender: TObject); beginlabel5.Caption:=;combobox1.ItemIndex:=-1;combobox2.ItemIndex:=-1;combobox3.ItemIndex:=-1;combobox4.ItemIndex:=-1; end
21、; 程序运行的效果,5.5 滚动条 用户想自己操纵窗口的滚动,就要用到TScrollBar组件。当用户在滚动条上操作时,将触发OnScroll事件,这样就可以操纵滚动条。TScrollBar组件位于“Standard选项卡中,它直接继承于TwinControl中。 1.滚动条的主要属性LargeChange属性 Max、Min属性 PageSize Positio SetPaxams OnScroll 【例5.3】利用递归的方法计算N!,在这个例子中,在窗体中创建了2个标签、1个滚动条、2个按钮及1个编辑框组件。窗体设计创建一个新的应用程序,在窗体上添加2个标签、1个滚动条、2个按钮及1个编辑
22、框组件。 程序设计 /利用递归的方法计算N!,function fac(n:integer):real; begin if n=0 thenfac:=1 elsefac:=n*fac(n-1); end; /计算按钮触发的事件 procedure TForm1.Button1Click(Sender: TObject); var e:real;n,i:integer; begin e:=0; n:=scrollbar1.Position; for i:=0 to n-1 doe:=e+1/fac(i); edit1.Text:=floattostr(e); end; /应用滚动条,来获得当前需
23、计算的关系式的项数 procedure TForm1.ScrollBar1Change(Sender: TObject); begin label2.Caption:=format(计算前%d项,scrollbar1.position); end; /关闭按钮触发的事件 procedure TForm1.Button2Click(Sender: TObject); begin close; end;,/应用滚动条,来获得当前需计算的关系式的项数 procedure TForm1.ScrollBar1Change(Sender: TObject); beginlabel2.Caption:=fo
24、rmat(计算前%d项,scrollbar1.position); end; /关闭按钮触发的事件 procedure TForm1.Button2Click(Sender: TObject); beginclose; end; 程序运行的效果,/应用滚动条,来获得当前需计算的关系式的项数 procedure TForm1.ScrollBar1Change(Sender: TObject); beginlabel2.Caption:=format(计算前%d项,scrollbar1.position); end; /关闭按钮触发的事件 procedure TForm1.Button2Click
25、(Sender: TObject); beginclose; end; 程序运行的效果,5.4本章小结本章中介绍了Delphi中的主要组件的属性和基本使用方法,并且通过一些简明的示例对它们进行了更直观的介绍。通过本章的介绍,使读者对Delphi组件有了一个初步的定性的了解,初步掌握了用一些常用组件来设置窗体并完成需要的功能。Delphi中还有一些组件本章中没有介绍,读者可以自己查看组件面板中的组件,参照帮助或对象查看器以及有关资料学习。 习题5 5-1 简述组件的缩放、移动、复制与删除的操作步骤。 5-2 列举出可用于字符输入的各类编辑框的名称以及它们各自不同的特点。 5-3 列举出各类按钮组件的名称以及它们各自不同的特点和用途。 5-4 列举出各类列表组件的名称以及它们各自不同的特点和用途。 5-5 列举出各类布局组件的名称以及它们各自不同的特点和用途。 5-6 设计1个窗体,利用ComboBox编辑框,对客户名单进行管理,要求在编辑框输入新的值,一旦要加入,应与下拉列表中原有值不重复。 5-7 设计1个窗体,编写文本处理程序,要求有复制、剪贴、字体、字型等按钮。 5-8 菜单的快捷键和热键的区别是什么,如何设置快捷键和热键。 5-9 如何控制快捷菜单的弹出位置。 5-10如何创建动态菜单。,