第四章VCL的使用课件.ppt
第四章 运用组件编程,4.1 可视化组件库VCL 4.2 窗体设计 4.3 常用组件 4.4 其他组件4.5 输入与输出,4.1 VCL基础,Delphi提供了丰富的组件(component,也称为构件)。这些组件都是由TComponent类派生而来,封装在可视化组件库(VCL)中。这里所说的可视化是指在窗体设计时所有组件的可视性。组件依据程序运行时是否可见而分为可视组件和非可视组件,可视组件如标签(Label)、编辑框(Edit)、按钮(Button)等;非可视组件,如计时器(Timer)、图像列表(ImageList)等。通常,使用可视组件来设计用户界面,用非可视组件来实现特殊的功能。,一、VCL的层次结构,TObject(所有Delphi类的祖先)TPersistent(持久性对象)TComponent(组件对象)非可视组件 TControl(所有可视组件的祖先) TGraphicControl(图形类对象) TWinControl等 (窗口控件),二、VCL组件的属性、方法和事件 VCL组件的属性 VCL组件的方法 VCL组件的事件,4.2 窗体设计,窗体是程序界面的框架,菜单和组件置于其上。窗体是一种对象,类名是TForm。窗体对象有属性、方法和事件。可以只设计一个窗体的界面,也可以设计多个窗体的界面,甚至可以是多文档窗体。,一、窗体常见的属性、方法及事件,1. 窗体的属性 Delphi中通常用两种方法设置对象(窗体)的属性:(1)界面设计阶段通过Object Inspector对象监视器窗口设置属性。先在对象框中选取对象,然后在Properties选项页上修改属性。(2)在程序代码中用赋值语句设置属性,语法为: 对象名.属性名:=属性值,窗体常见属性,Name:默认值为Form1、Form2、.大小及位置:Top 和 Left:窗体左上角相对于屏幕的垂直和水平坐标值Width 和 Height:窗体的总宽度和总高度Align:窗体相对于屏幕的对齐方式外观:BorderIcon:窗体标题栏中系统菜单和窗口控制按钮BorderStyle:窗体边框的类型,Caption:窗体标题栏中显示的标题Color:窗体工作区的颜色Font:窗体中显示文字的字体Visible:窗体是否可见WindowStyle:窗体的显示状态状态控制:Enable:窗体的使用状态FormStyle:窗体的类型,2. 窗体常用方法,(1)Create:动态地创建一个窗体。(2)Show:显示一个窗体。(3)Close:关闭一个显示中的窗体。(4)CloseQuery:判断窗体是否可以关闭,返回一个逻辑值。(5)Release:将窗体对象从内存中彻底删除。(6)ShowModal:显示一个模式窗体。(7)Print:打印窗体。(8)Canvas:绘制图形、输出文本。,程序中需要窗体完成某种行为动作时,要在程序代码中调用窗体的方法,语法为: 窗体名.方法名(参数列表);,3. 窗体常见事件,窗体事件是窗体可以识别的外部动作,事件可以由用户操作触发,也可以由操作系统、其他应用程序、应用程序本身触发,例如程序运行时用户单击一下窗体将触发窗体的OnClick事件。 在程序源代码中添加窗体的事件,可以打开对象监视器窗口的Events选项页。从对象列表中选择窗体对象,然后双击事件名右边的空白区域,添加窗口事件程序代码。,窗体常见事件,(1)OnCreate:窗体创建时触发。该事件中通常可实现程序的初始化工作。(2)OnDestroy:窗体从内存中删除时触发。该事件通常可以加入资源释放的程序代码。(3)OnShow:窗体显示时触发。当窗体的Visible属性为True时窗体被显示。(4)OnHide:窗体隐藏时触发。当窗体的Visible属性为False时,窗体被隐藏。(5)OnClose和OnCloseQuery:当关闭窗体时,先触发OnCloseQuery事件,处理程序当前的状态,然后触发OnClose事件,关闭窗口。,(6)OnClick:单击一下窗体将触发该事件。(7)OnDblClick:单击窗体将触发该事件。(8)OnPanit:窗体重画时将触发该事件。,二、简单窗体设计,例4-1:窗体左上角位于屏幕的坐标是120,80;大小是360280;窗体的标题是“简单窗体”,背景颜色是蓝色。程序运行时在窗体的50,30位置输出文本“您好!”,文本的颜色是黄色,字体是楷体_GB2312,一号。单击窗体后,窗体的颜色变成白色,字的颜色是黑色,字体为宋体,大小为50,并在窗体的100,100位置输出文本“再见!”。,三、多窗体设计,1. 静态创建 静态创建窗体是在界面设计阶段完成的。具体方法如下: 执行【File】【New】【Form】菜单项,添加一个新的窗体,默认名称是Form2。然后在主窗体Form1的Uses单元中加入新窗体的单元名,这样在主窗体的事件中可以调用Form2。,2. 动态创建,动态创建窗体是在程序运行阶段完成的。在程序代码中调用窗体的Create方法。静态创建的子窗体在程序刚运行时就全部装人内存当中,如果一个应用程序的子窗体数目很多,将占用过多的内存资源。动态创建的子窗体,在程序刚运行时并没有装入内存中,当使用到该子窗体时才装入内存,使用完后立即将其从内存中释放,以节省内存资源。,(1)执行【File】【New】【Form】菜单项命令一次,添加一个新的窗体,默认名称是Form3在已有的窗体对象名FormN(N=1,2,.)中把N值加1。然后在主窗体Form1的uses单元中加入新窗体的单元名,这样在主窗体的事件中可以调用Form3。(2)执行【Project】【Options】菜单项,打开“Project Options”(工程选项)对话框。对话框的“Auto-create forms(自动创建窗体)”框中列出了在程序运行时加载到内存中的窗体。选择Form3,单击中间向右的箭头按钮,将其移动到“Available forms(可用窗体)”框中。这样程序运行时,Form3窗体不会自动加载到内存。,(3)程序代码中,要使用Form3窗体时,添加如下代码:Form3:=Tform3.Create(self); / 创建子窗体Form3,将Form3加载入内存Form3.Show; / 显示窗体Form3(4)要从内存中释放Form3窗体时,添加如下代码:Form3.Free; / 将Form3从内存中释放掉,例4-2: 创建多窗体应用程序。Form1为主窗体,Form2为静态创建的窗体,Form3为动态创建的窗体。单击Form1窗体显示Form2窗体,双击Form1窗体关闭Form2窗体。单击Form2窗体创建并显示Form3窗体,双击Form2窗体关闭并释放Form3窗体。,四、MDI多文档窗体,一个单文档应用程序只能打开一个文档,而一个多文档(MDI)应用程序可以同时打开不同类型的多个文档。MDI应用程序提供了一种方便的方式,使得用户在同一工作区域内可以对多个文档进行观察和交换数据。MDI窗口部分由一个主窗口(也称为父窗口)和多个子窗口组成,每个文档对应一个子窗口。子窗口位于主窗口的工作区内,激活子窗口后主窗口的菜单自动被当前子窗口的菜单所代替。在主窗口的工作区内可以对子窗口进行层叠、平铺、定位、最大化和最小化、改变大小等各种操作,若最大化子窗口,将占满MDI主窗口的全部工作区。,执行【File】【New】【Other】菜单项,打开New Items(新建项目)对话框。这个对话框提供了多个向导和模板,可以生成多种不同用途的应用程序。选择“Projects”选项页,单击“MDI Application”,然后单击“OK”按钮,生成一个多文档应用程序。 系统自动为应用程序生成了三个窗体:主窗体(MainForm)、子窗体(MDIChild)、对话框(AboutBox)。,五、窗体中组件的操作,1.组件的添加 2.选定组件 3.改变组件的大小 4.对齐组件 5.移动和删除组件 6.组件的复制与粘贴 7.组件的Tab键次序设定,4.3 常用组件,一、Standard页上的常用组件,1. Label标签组件 标签组件用于在窗体上显示文字,通常用它为其他组件加上一些标注和说明文字,以便让使用者了解那些组件的用途。特别是有些组件本身没有Caption属性,添加一个标签组件作为提示文字就很有必要。 可将标签组件的焦点转移给Form上的另一个对象,方法是设置标签组件的FocusControl属性。在值段中,选用与它关联对象的对象名。然后在标签中设置热键,即在Caption属性值段中输入含有“&”的字串,紧接“&”之后的字母称为热键字母,当用户使用“Alt+热键字母”时,将焦点选中它所指向的对象。,标签组件常用属性,Caption:设定标签中显示的文字AutoSize:为True,标签的长度随文字的长度而改变Transparent:为True,是透明标签,会显示背景颜色Alignment:指定文本在标签矩形框内的水平对齐方式,taLeftJustify(左对齐),taCenter(居中), taRightJustify(右对齐),Layout:指定文本在标签矩形框内的垂直对齐方式,tlTop(向左对齐),tlCenter(居中), tlButton(向下对齐)WordWrap:为True,文本到达矩形框右边界时自动折返;为False,文本太长时会截断ShowAccelChar:为True,则会在&字符右边的字符加上底线“ ”,表示此字符为Label组件的热键字母,2. Edit编辑框组件,编辑框组件常用于文本输入输出,不仅可以显示用户的字符串文本,还允许用户输入和编辑文本。在人机交互界面中,使用Edit对象最主要的目的就是接收用户信息,通常用Edit对象输入数据,如输入用户姓名、通信地址等。编辑框组件的常用事件 :OnChange:当编辑框组件中的文本发生改变时触发此事件。OnKeyPress:当编辑框接收到键盘字符时触发。,编辑框组件常用属性,Readonly:决定编辑框内的文本是否可以被编辑。为True时,只能显示文本,不能输入和更改文本BorderStyle:设置编辑框的边框类型:bsSingle,单线边框;bsNone,无边框AutoSelect:当组件获得焦点时,是否自动选中所有的文本AutoSize:指定编辑框的高度是否随文本的高度而改变Enable:为False,编辑框不响应任何事件,PasswordChar:指定一个字符来代替显示用户输入的字符,在用户输入密码时常用MaxLength:编辑框内可输入文字的最大长度。-1表示没有长度限制,默认值为-1SelText:被选中的文本CharCase:设置编辑框文字的大小写状态:ecLowerCase,转为小写;ecNormal,不改变;ecUpperCase,转为大写,编辑框组件的常用方法,3. Memo多行编辑框组件,多行编辑框组件Memo与Edit组件很相像,都是提供给用户在程序中输入数据或显示文字用的对象。与编辑框组件不同的是,多行编辑框组件可以显示和编辑多行文本,而编辑框组件只能显示和编辑一行文本。多行编辑框组件的属性和方法与编辑框组件有很多相同之处,如Text、MaxLength、ReadOnly等属性。,(1)Memo组件的Lines属性,Lines属性设置和显示在多行编辑框组件内的文本。在对象监视器窗口单击Line属性旁边的“.”按钮,打开编辑器窗口,在空白区域可以输入多行文本。区域的上方显示输入文本的行数。 Text与Lines都用来存取数据,Text存放Memo对象中全部的输入数据,而Linesi存放第i+1行的字符串。例如:设置第5行文本值为“Delphi程序设计”程序代码可以写成: Memo1.Lines4 := Delphi程序设计;。,Lines常用的属性和方法,Strings属性:指定组件每一行文本的内容Memo1.Lines.Strings0 :=第一行;等效于Memo1.Lines0 :=第一行;Add方法:在组件的最后添加一行文本Memo1.Lines.Add(最后一行下面加一行文字);Insert方法:在指定行下方插入一行文本Memo1.Lines.Insert(2,第三行处插入一行);Delete方法:删除组件内指定行的文本Memol.Lines.Delete(2); / 删除第三行,SaveToFile:将文本保存到文件Memo1.Lines.SaveToFile(C:tempa.txt);LoadFromFile:读取文件内容到Memo组件中Memo1.Lines.LoadFromFile(C:tempa.txt);Clear:清除组件内的所有文本Memo1.Lines.clear;,(2)Memo组件的其他常用属性,ScrollBar:设置是否显示滚动条。有四个值:ssBoth,显示水平和垂直滚动条;ssHorizontal,显示水平滚动条;ssVertical,显示垂直滚动条;ssNone,不加滚动条。WantReturn:设置在组件内部能否使用回车键,为True表示可以使用回车键。WantTab:设置在组件内按Tab键是否起到移位作用,可取True和False两个值,4. Button基本按钮组件,按钮是人机交互界面最常见的一个组件,通常用于用户选取执行某项命令。Delphi提供的按钮有基本按钮、位图按钮、复选框、单选按钮、加速按钮等。基本按钮Button是最简单的一种按钮。,(1)Button按钮的常用属性,Caption:按钮上显示的文本Default:设定按钮是否为默认按钮。默认按钮在打开窗体或对话框时首先取得焦点,此时按下Enter键,将执行默认按钮的OnClick事件处理代码。虽然可将多个Button对象指定为默认按钮,但只有Tab次序最前的Button对象才是真正的默认按钮Cancel:设定按钮是否为取消按钮,取消按钮的功能与默认按钮相同,但它是针对Esc键设计的。当用户按下Esc键,被设为取消按钮的OnClick事件处理就会被执行,(2)Button按钮的常用事件,Button按钮常用的响应事件有:OnClick、OnDblClick、OnMouseMove、OnMouseUp、OnMouseDown等。OnClick及OnDblClick处理事件是最常用的。 当用户用鼠标在Button对象上单击一下,或是当焦点在Button对象上时按下Enter键,触发OnClick事件处理。因此,可以把单击Button对象后要执行的程序放在这个事件处理中。,例4-3:创建一个应用程序,在窗体上加一个Edit1编辑框组件,在Edit1左边加一个Label1标签组件,在Edit1下方加一Button1基本按钮组件;窗体上再加一个Memo1多行编辑框组件,在Memo1上方加一个Label2标签组件,在Memo1下方加Button2、Button3、Button4、Button5四个基本按钮组件。按下Button1则将Edit1中的文本加入到Memo1的最后一行,按下Button2则删除Memo1的最后一行文本,按下Button3则清除Memo1的所有文本,按下Button4则将Memo1的所有文本存入C:a.txt文件中,按下Button5则将C:a.txt文件中的内容读入Memo1中。应注意将Button1设置成默认按钮,而将Button2设置成取消按钮。,5. Panel面板组件,Panel组件内,起分组作用 。另外,Panel组件提供了优化视觉效果的属性,因此Panel组件也常作为某些组件的背景,使程序界面更协调、优美。面板组件Panel还常用于制作信息栏或状态栏。,面板组件Panel的常用属性,Align:固定Panel的位置:alBotton,固定在父组件下方;alCient,覆盖父组件的全部;alLeft,固定在父组件左方;alNone,位置没有限制;alRight,固定在父组件右方;altop,固定在父组件上方BevelInner:确定Panel内层是凸出还是凹下:bvLowered,内层凹下;bvNone,内层无凹凸;bvRaised,内层凸出BevelOuter:确定Panel外层是凸出还是凹下:bvLowered,外层凹下;bvNone,外层无凹凸;bvRaised,外层凸出,BevelWidth:确定Panel内层或外层边界线的粗细,数值越大界线越粗BorderStyle:确定Panel是否有外框。BorderWidth:确定Panel外层部分的宽度,数值越大外层越宽例4-4:利用Panel的属性变化,使Panel产生不同的效果。,6. CheckBox复选框组件,复选框有一小方框,旁边带有文本说明,一般具有选中和未选中两种状态,鼠标单击复选框可以在这两种状态之间切换。选中复选框时,小方框内有标记。 复选框组件通常由多个复选框组件形成一组,在这一组中用户可同时选中多个组件,选项彼此之间是不具有“互斥性”的,不会影响其他选项的行为,适用于要进行多项选择的情况。组件可以识别OnClick事件。,复选框组件的常用属性,State:指定三种状态:cbChecked,选中;cbUnChecked,未选中;cbGrayed,不确定Checked:为True,则选中,小方框内有标记;为False则未选中Caption:设置复选框旁边的说明文字,7. 单选按钮组件,单选按钮是旁边带有文本说明的小圆圈,具有选中和未选中两种状态。组件的Checked属性值为True时,组件处于选中状态,小圆圈的内部有黑色的小点;为False时,组件处于未选中状态,小圆圈是空心的。 在一组单选按钮中,只允许一个单选按钮处于选中状态,也就是说,在同一群组中的选项彼此之间是具有“互斥性”。单选按钮适用于在多个选项中选择一项的情况。,单选按钮组的实现通常用三种方法:,利用GroupBox分组组件+ RadioButton单选按钮组件利用Panel面板组件+ RadioButton单选按钮组件 利用RadioGroup单选分组框组件, 其常用属性有: Caption:设置显示在组件上方的文字Columns:设置组件的列数,最多可有16个ItemIndex:设置单选分组框中被选中的单选按钮的索引值,从0开始Item:设置单选分组框中单选按钮的标题文字,每行文本代表一个选项。利用提供的方法可以添加(Add)、删除(Delete)、插入(Insert)、交换(Exchange)选项按钮。例4-5:,8. ListBox列表框组件,列表框中可以显示出所有可能的数据供用户选择,用户可以选择其中的一项或多项,因此用户输入数据可以不必使用键盘。列表框组件常用于选项较多的情况。,列表框组件的常用属性,Items:列表框内的选项数据。可以在设计阶段单击属性右边的“.”按钮,在编辑窗口输入选项,一行对应一个选项。程序运行时,可以利用Items对象提供的方法:Add添加一个选项,Delete删除一个选项,Clear删除所有选项,Insert插入一个选项,Move移动选项位置,Exchange交换两个选项的位置。Count:列表框内的选项数据的项数ItemsIndex:选项在Items数组中的编号,从0开始至Count-1,Columns:列表框的列数MultiSelect:是否可以选择多项SelCount:被选中项目的数量Selected:设置或返回某选项是否被选中Sorted:决定列表框的选项是否排序,9. ComboBox组合框组件,组合框组把Edit编辑框和ListBox列表框两者功能合二为一,用户可以直接输入内容,也可以单击向下的箭头后拉出一个列表框,从中选择某个列表项。 在组合框中选项数据的新增、删除、移动、选取等等,也是利用Items对象的Add、Delete、Clear、Insert、Exchange、Move等方法完成。,组合框组件的常用属性,Items:组合框下拉列表的选项数据。可以在设计阶段单击属性右边的“.”按钮,在编辑窗口输入选项,一行对应一个选项。程序运行时,可以利用Items对象提供的方法:Add添加一个选项,Delete删除一个选项,Clear删除所有选项,Insert插入一个选项,Move移动选项位置,Exchange交换两个选项的位置Count:下拉列表的选项数据的项数ItemsIndex:选项在Items数组中的编号,从0开始至Count-1Text:确定在组合框中显示的文本,Sorted:决定组合框的列表选项是否排序Style:组合框的风格,有几种可供选择的风格:csDropDown,标准风格,用户可以在组合框中输入;csDropDownList,只有列表框,没有编辑框;csOwnerDrawFixed,有编辑框,但只能显示不能输入,也有列表框,每个列表项的高度由ItemHeight属性统一指定;csOwnerDrawVariable,有编辑框,但只能显示不能输入,也有列表框,每个列表项的高度可以不同,可显示非字符串的数据;csSimple,只有编辑框,没有列表框DropDownCount:组合框下拉列表显示选项的最大行数,例4-6:某单位开田径运动会,该单位员工姓名可在ComboBox1的列表框中选取,也可以从键盘输入。所有参赛项目放在ListBox1中供选取,某员工将要参赛的项目从ListBox1中选取至ListBox2,最后将所有员工参赛的项目放在Memo1组件中。,10. ActionList行为列表组件,应用程序通常要完成多项指定的任务,Delphi中可以把某项任务指定为一个“行为”。一个应用程序的所有的“行为”常常用ActionList行为列表组件进行管理。设置ActionList的Images属性,就能为ActionList指定一个图像列表(ImageList)对象。 利用“行为”列表编辑器可以添加、删除、修改“行为”。每个“行为”都是一个对象,双击某个“行为”可在该“行为”的OnExecute事件中编写相应的执行程序代码。,11. MainMenu主菜单组件,菜单可分为两类:主菜单和弹出式菜单。主菜单又称下拉菜单,由MainMenu组件实现;弹出式菜单由PopupMenu组件实现。 MainMenu主菜单组件有两个常用属性:Items(添加菜单项)及Images(指定图形组件用于建立图形菜单)。,Delphi中使用MainMenu组件创建主菜单的步骤如下:,(1)生成主菜单将MainMenu组件放入应用程序的某一窗体中,就在该窗体对象上建立了主菜单对象,默认的名称是MainMenu1。该窗体的Menu属性值也自动设置为MainMenu1。(2)使用菜单编辑器添加菜单项 直接双击窗体上的主菜单对象打开菜单编辑器。进人菜单编辑器后,单击空菜单项。每一个菜单项都是一个MenuItem对象,都有自己的属性和方法。,(3)指定菜单加速键和热键鼠标可以操作菜单,还应该允许键盘操作菜单。输入菜单项的Caption属性时,若输入 “&+字母”,“&”符号后边的那个字母称为加速字母,运行时加速字母显示成下划线字母,按Alt+加速字母键就执行此菜单项。加速键必须在上层菜单项被激活后才能使用。设置菜单项的ShortCut属性:从其下拉列表中选择一热键组合,程序运行时使用这一热键组合可以直接执行菜单项。,(4)编写菜单项事件代码双击菜单项,进人该菜单项的OnClick事件程序代码中,添加相应的代码,实现菜单的功能。 如果应用程序窗体上有ActionList行为列表组件,可以设置菜单项的Action属性。为菜单项指定行为,同样也能实现菜单的功能。,菜单项的常用属性,Name:菜单项对象的名称Caption:菜单项的标题Action:可以为该菜单项指定事件代码以实现该项菜单的功能。通常事件代码是在该菜单项的OnClick事件中编写,但更好的方法是在窗体中加入一个ActionList行为列表组件,为该菜单项指定行为ImageIndex:选取ImageList图形列表组件内的某一图形,指定该菜单项的图形标志Checked:是否在菜单项标题旁边加上标志ShortCut:指定菜单项的热键,要在菜单中加入一个分隔条,可设置菜单项的Caption属性为“-”。要在某个菜单项的前面插入一个新的菜单项,可先选择此菜单项,然后按Insert键。删除菜单项,可先选择要删除的菜单项,按Delete键。用鼠标拖动菜单项可以调整菜单项的位置。另外,Delphi系统提供菜单模板,右击菜单项,从快捷菜单中选择从模板插入(Insert From Template)可以将菜单模板加入到菜单项。,12. PopupMenu弹出式菜单组件,PopupMenu组件用来制作弹出式菜单,即在窗口的某个位置右击鼠标,便会在该位置上出现一个菜单弹出式菜单。 一个窗体中,弹出式菜单可以有多个,使用时在某个组件(如Panel)的PopupMenu属性指定弹出式菜单的名称,运行时右击这个组件,就可以打开设定的弹出式菜单。不同的组件可指定不同的弹出式菜单,也可指定同一个弹出式菜单。,弹出式菜单制作过程与主菜单基本相同,所不同的是可以设置弹出式菜单的位置。PopupMenu的属性Alignment用于设置弹出式菜单的位置,其取值说明如下:paCenter:菜单弹出时顶部中点位于鼠标右击点上paLeft:菜单弹出时左上角位于鼠标右击点上paRight:菜单弹出时右上角点位于鼠标右击点上,二. Additional页上的常用组件,1. BitBtn位图按钮组件 位图按钮与基本按钮的作用相同。基本按钮上只能显示文字,而位图按钮上不仅可以显示文字,还可以显示位图,使界面更加美观。,BitBtn组件的常用属性,Caption:位图按钮上显示的文字Kind:确定位图图形的种类,可取11个值。当为bkCustoms时, 位图图形由Glyph属性确定。取另外10个值,由系统规定按钮的图形和文字(如图4-15所示)Glyph:确定位图图形文件(*.bmp)Spacing:确定按钮上位图与文字的像素个数。为-1时,文字、位图、按钮成等距离Margin:确定位图与按钮边界之间的像素个数,Layout:位图按钮上文字和图形的布局。为blGlyphLeft,图像在文字的左边;为blGlyphRight,图像在文字的右边;为blGlyphTop,图像在文字的上面;为blGlyphBottom,图像在文字的下面,2. SpeedButton加速按钮组件,加速按钮上也可以显示图形和文字,用法与位图按钮非常相似。其他的按钮如普通按钮、位图按钮在按下后立即弹起,而加速按钮可以在按下后仍保持按下的状态。通常多个加速按钮形成一组,在这一组中只能有一个按钮处于按下状态。因此,加速按钮多用于生成工具栏按钮。,SpeedButton的常用属性,Caption:按钮上显示的文字AllowAllUp:为True,允许一组中的所有按钮都可以弹起;为False,一组按钮中有一个是按下状态Down:确定按钮是弹起(False)还是按下(True)状态,同一组只能有一个为TrueGroupIndex:确定加速按钮的组号,为0表示此按钮不属于任何一组。此值相同的按钮将组成同一组Glyph:确定显示在按钮上的位图图形文件(*.bmp)Layout:确定按钮上文字和图形的布局,三、Win32页上的常用组件,1. ImageList图形列表组件 ImageLlist组件用于管理一组(icons)图标或(bitmaps)位图。同一个ImageList组件中的图形大小相同,默认大小为1616像素,因此这些图形适合于作图标。如果ImageList组件中有n个图形,则每个图形都编一个号,编号从0到n-1,通过编号可以访问对应的图形。,ImageList组件的常用属性,Height:确定图形的高度,默认值为16像素Width:确定图形的宽度,默认值为16像素BkColor:确定背景颜色BlendColor:确定前景颜色ImageType:默认值为itImage,表示显示原图形;若值为itMask则显示原图形的掩码Masked:值为True表示含有透明图形,值为False则含有不透明图形,利用图形列表编辑器可以向ImageList组件内加载图形。双击ImageList组件可以打开图形列表编辑器。,2. ToolBar工具栏组件,工具栏把常用的菜单项对应成按钮,并把多个按钮以列表的形式排列成行,用户单击工具栏某个按钮就执行该菜单项的功能,不要到菜单中去找相应的菜单项。 工具栏中可以添加按钮(Button)、图形按钮(BitBtn)、加速按钮(SpeedButton)、组合框(ComboBox)、编辑框(Edit)等。工具栏可以放在标题栏或菜单的下面,也可以放在窗口工作区的下面或左边。,使用ToolBar组件建立工具栏的步骤,(1)将ToolBar添加到窗体上,生成空白的工具栏。默认位于窗口的顶部,宽度与窗体相同。设置Alignment属性可以改变工具栏的位置。(2)右击ToolBar组件,从弹出式菜单中执行“New Button”,则在工具栏中添加一个按钮。,工具栏组件常用属性,Alignment:确定工具栏相对窗体的位置。默认值为alTop,位于顶部;alLeft,位于左边;alRight,位于右边;alBottom,位于底部;alClient,占满整个窗体;alCustom,用户自定义; alNone,位置没有限制Caption:按钮上显示的文字Flat:默认值为False,表示工具栏上的按钮有边框;值为True表示按钮无边框,程序运行时鼠标移到按钮上面,按钮自动凸出显示,Images:指定工具栏的图形组件(通常是ImageList组件)List:默认值为False,表示图标在按钮的中间,文字在图标的下方;值为True表示图标在按钮的左边,文字在图标的右边ShowCaption:默认值为False,表示按钮上不显示文字;值为True表示按钮上显示Caption属性的文字,工具栏按钮常用属性,Down:默认值为False,表示按钮处于弹起状态;值为True表示按钮处于按下状态Grouped:默认值为False,表示按钮不成组;值为True表示按钮成组(一个组中只能有一个按钮处于按下状态)ImageIndex:设定ImageList组件的图标索引号MenuItem:指定本按钮与哪个菜单项相对应Style:确定按钮的风格:TbsButton,按钮任何时候都处于按下状态;TbsCheck,单击按钮变为按下状态,再单击按钮变为弹起状态;Tbsdivider,显示分隔符;TbsDropDown,显示向下的箭头;TbsSeparator,显示为空的分隔符,3. ProgressBar进度条组件,进度条组件用来指示一项任务的执行进度,随着任务的进行,在进度条的矩形区域内从左向右填充上小方块,当方块充满整个矩形区域时,表示任务的完成。,进度条组件常见的属性,Max:确定进度条的最大数值Min:确定进度条的最小数值Orientation:确定进度条方向。pbHorizontal表示水平方向,pbVertical表示垂直方向Position:取值在min与max之间,表示进度进展情况Smooth:确定方块填充方式是平滑的(True)还是分段的(False)Step:确定进度条的步长,即Position的递增值,进度条组件常见的方法,StempBy(Data:Integer):增加Position的值,增加的大小由Data确定StepIt:也能增加Position的值,增加的大小要由Step确定,4. StatusBar状态栏组件,状态栏一般位于窗体的底部,用于显示当前状态信息。 状态栏组件初始是个空白的状态栏,常常要在状态栏上添加多个状态面板,并在每个状态面板上添加文字作为提示信息。双击状态栏组件,打开面板编辑器,添加状态面板。单击面板编辑器中的“新增”按钮,为状态栏添加状态面板。在对象监视器中,在状态面板的Text属性中输入文字,状态栏中对应的面板上将显示这些文字。,状态栏组件常用属性,Alignment:确定状态栏在对窗体的位置。默认值为alBottom,位于底部;alLeft,位于左边;alRight,位于右边;alTop,位于顶部;alClient,占满整个窗体;alCustom,用户自定义; alNone,位置没有限制BorderWidth:状态栏边框的宽度Panels:状态栏中的面板集合,状态栏面板常见的属性,Alignment:确定文字在状态栏面板中对齐方式Text:确定显示状态栏面板上的文字Width:确定状态栏面板的宽度 状态栏的Panels属性也是一个对象,Panels.Itemsi.text(i=0, 1, 2, .)可以用来设置第i个状态栏面板上显示的文字。 例4-7:菜单、工具栏、状态栏综合应用,4.4 其他组件,一、Timer组件 (1)Enable属性:该属性值决定Timer是否有效。如果Enable值为True,则OnTimer事件将发生;如果是False,则OnTimer事件不发生。Enable缺省值是True。 (2)Interval属性:该属性值以毫秒为单位,决定了触发OnTimer事件的时间间隔。缺省值是1000(即1秒),取值范围是065535之间的整数。如果将Interval设为0,则没有OnTimer事件发生。(3)OnTimer事件:每经过由Interval属性确定的时间间隔,为该事件编写的处理程序将自动执行一次。 例4-8,二、Application组件,当一个应用程序运行时,Delphi会自动产生一个Application对象,用来取得或设定和整个应用程序有关的属性。,1)Title、Icon属性,属性Icon决定了该应用程序在Windows操作系统中以什么图标显示,图标下方的文本由Title属性决定。在程序设计阶段,这两个属性可由以下方法来设定。在Delphi IDE中,选择执行【Project】【Options】菜单项。在“Title”编辑框中改变Title属性值,也可以点击 “Load Icon”按钮来改变应用程序图标。在程序运行阶段,可以用以下代码来设置这两个属性的值:Application.Icon.LoadFromFile(D:DemoMyicon.ico); Application.Title:=My First Program;,(2)ExeName属性:记录了该应用程序的文件名,以及所在的磁盘名、文件夹名。,三、Canvas组件,Delphi的画布对象Canvas提供了大量的绘图功能供设计者使用,它本身并不以控件的方式出现在控件板上,而是以属性的方式依附在其他对象中,我们可以在带有Canvas属性的对象上绘图。,1.Canvas最重要的3个属性,Pen属性:该属性同时也是一个对象,绘图时可用于设定线条的颜色、粗细、样式等特性。Brush属性:该属性也是一个对象,用于决定图形的填充图案。Pixels属性:这是一个二维数组,Pixelsx, y的值决定了画布上像素坐标为(x, y)的点的颜色。如:要把Form1窗口中坐标值为(100, 60)的点改为红色。可用语句:Form1.Canvas.Pixels100,60:=clRed; 注意:画布坐标系的原点是在左上角,以像素为长度单位,画布的右方为X坐标递增方向,下方为Y坐标的递增方向。,Canvas对象的常用属性,PenColor:线条颜色Width:画笔宽度,该值越大,画出的线条就越粗Style:线条样式BrushColor:填充图案颜色Style:填充图案样式Pixels:像素点颜色,Delphi中颜色的枚举值及其意义 Delphi中线条样式的枚举值及其意义Delphi中填充图案样式的枚举值及其意义,2. Canvas的常用绘图方法,MoveTo(x, y: Integer):将画笔的当前位置设置到点(x, y)处。LineTo(x, y: Integer):从当前画笔位置画线至点(x, y),并将画笔的当前位置