第四章 常用组件_第1页
第四章 常用组件_第2页
第四章 常用组件_第3页
第四章 常用组件_第4页
第四章 常用组件_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章常用组件第一页,共一百一十一页,编辑于2023年,星期五4.1VCL基础

Delphi提供了丰富的组件(component,也称为构件)。这些组件都是由TComponent类派生而来,封装在可视化组件库(VCL)中。这里所说的可视化是指在窗体设计时所有组件的可视性。组件依据程序运行时是否可见而分为可视组件和非可视组件,可视组件如标签(Label)、编辑框(Edit)、按钮(Button)等;非可视组件,如计时器(Timer)、图像列表(ImageList)等。通常,使用可视组件来设计用户界面,用非可视组件来实现特殊的功能。

第二页,共一百一十一页,编辑于2023年,星期五一、VCL的层次结构TObject(所有Delphi类的祖先)│TPersistent(持久性对象)│TComponent(组件对象)┌─────┴─────────┐非可视组件TControl(所有可视组件的祖先)┌───────┴─────┐TGraphicControl(图形类对象)TWinControl等(窗口控件)

第三页,共一百一十一页,编辑于2023年,星期五二、VCL组件的属性、方法和事件

VCL组件的属性

VCL组件的方法

VCL组件的事件

第四页,共一百一十一页,编辑于2023年,星期五4.2窗体设计

窗体是程序界面的框架,菜单和组件置于其上。窗体是一种对象,类名是TForm。窗体对象有属性、方法和事件。可以只设计一个窗体的界面,也可以设计多个窗体的界面,甚至可以是多文档窗体。

第五页,共一百一十一页,编辑于2023年,星期五一、窗体常见的属性、方法及事件

1.窗体的属性Delphi中通常用两种方法设置对象(窗体)的属性:(1)界面设计阶段通过ObjectInspector对象监视器窗口设置属性。先在对象框中选取对象,然后在Properties选项页上修改属性。(2)在程序代码中用赋值语句设置属性,语法为:

对象名.属性名:=属性值

第六页,共一百一十一页,编辑于2023年,星期五窗体常见属性Name:默认值为Form1、Form2、...大小及位置:Top和Left:窗体左上角相对于屏幕的垂直和水平坐标值Width和Height:窗体的总宽度和总高度Align:窗体相对于屏幕的对齐方式外观:BorderIcon:窗体标题栏中系统菜单和窗口控制按钮BorderStyle:窗体边框的类型第七页,共一百一十一页,编辑于2023年,星期五Caption:窗体标题栏中显示的标题Color:窗体工作区的颜色Font:窗体中显示文字的字体Visible:窗体是否可见WindowStyle:窗体的显示状态状态控制:Enable:窗体的使用状态FormStyle:窗体的类型第八页,共一百一十一页,编辑于2023年,星期五2.窗体常用方法(1)Create:动态地创建一个窗体。(2)Show:显示一个窗体。(3)Close:关闭一个显示中的窗体。(4)CloseQuery:判断窗体是否可以关闭,返回一个逻辑值。(5)Release:将窗体对象从内存中彻底删除。(6)ShowModal:显示一个模式窗体。(7)Print:打印窗体。(8)Canvas:绘制图形、输出文本。

第九页,共一百一十一页,编辑于2023年,星期五程序中需要窗体完成某种行为动作时,要在程序代码中调用窗体的方法,语法为:

窗体名.方法名[(参数列表)];第十页,共一百一十一页,编辑于2023年,星期五3.窗体常见事件窗体事件是窗体可以识别的外部动作,事件可以由用户操作触发,也可以由操作系统、其他应用程序、应用程序本身触发,例如程序运行时用户单击一下窗体将触发窗体的OnClick事件。在程序源代码中添加窗体的事件,可以打开对象监视器窗口的Events选项页。从对象列表中选择窗体对象,然后双击事件名右边的空白区域,添加窗口事件程序代码。第十一页,共一百一十一页,编辑于2023年,星期五窗体常见事件(1)OnCreate:窗体创建时触发。该事件中通常可实现程序的初始化工作。(2)OnDestroy:窗体从内存中删除时触发。该事件通常可以加入资源释放的程序代码。(3)OnShow:窗体显示时触发。当窗体的Visible属性为True时窗体被显示。(4)OnHide:窗体隐藏时触发。当窗体的Visible属性为False时,窗体被隐藏。(5)OnClose和OnCloseQuery:当关闭窗体时,先触发OnCloseQuery事件,处理程序当前的状态,然后触发OnClose事件,关闭窗口。第十二页,共一百一十一页,编辑于2023年,星期五(6)OnClick:单击一下窗体将触发该事件。(7)OnDblClick:单击窗体将触发该事件。(8)OnPanit:窗体重画时将触发该事件。第十三页,共一百一十一页,编辑于2023年,星期五二、简单窗体设计例4-1:窗体左上角位于屏幕的坐标是120,80;大小是360╳280;窗体的标题是“简单窗体”,背景颜色是蓝色。程序运行时在窗体的50,30位置输出文本“您好!”,文本的颜色是黄色,字体是楷体_GB2312,一号。单击窗体后,窗体的颜色变成白色,字的颜色是黑色,字体为宋体,大小为50,并在窗体的100,100位置输出文本“再见!”。第十四页,共一百一十一页,编辑于2023年,星期五三、多窗体设计1.静态创建静态创建窗体是在界面设计阶段完成的。具体方法如下:执行【File】→【New】→【Form】菜单项,添加一个新的窗体,默认名称是Form2。然后在主窗体Form1的Uses单元中加入新窗体的单元名,这样在主窗体的事件中可以调用Form2。

第十五页,共一百一十一页,编辑于2023年,星期五2.动态创建动态创建窗体是在程序运行阶段完成的。在程序代码中调用窗体的Create方法。静态创建的子窗体在程序刚运行时就全部装人内存当中,如果一个应用程序的子窗体数目很多,将占用过多的内存资源。动态创建的子窗体,在程序刚运行时并没有装入内存中,当使用到该子窗体时才装入内存,使用完后立即将其从内存中释放,以节省内存资源。第十六页,共一百一十一页,编辑于2023年,星期五(1)执行【File】→【New】→【Form】菜单项命令一次,添加一个新的窗体,默认名称是Form3[在已有的窗体对象名FormN(N=1,2,...)中把N值加1]。然后在主窗体Form1的uses单元中加入新窗体的单元名,这样在主窗体的事件中可以调用Form3。(2)执行【Project】→【Options】菜单项,打开“ProjectOptions”(工程选项)对话框。对话框的“Auto-createforms(自动创建窗体)”框中列出了在程序运行时加载到内存中的窗体。选择Form3,单击中间向右的箭头按钮,将其移动到“Availableforms(可用窗体)”框中。这样程序运行时,Form3窗体不会自动加载到内存。

第十七页,共一百一十一页,编辑于2023年,星期五(3)程序代码中,要使用Form3窗体时,添加如下代码:Form3:=Tform3.Create(self);//创建子窗体Form3,将Form3加载入内存Form3.Show;//显示窗体Form3(4)要从内存中释放Form3窗体时,添加如下代码:Form3.Free;//将Form3从内存中释放掉第十八页,共一百一十一页,编辑于2023年,星期五[例4-2]:创建多窗体应用程序。Form1为主窗体,Form2为静态创建的窗体,Form3为动态创建的窗体。单击Form1窗体显示Form2窗体,双击Form1窗体关闭Form2窗体。单击Form2窗体创建并显示Form3窗体,双击Form2窗体关闭并释放Form3窗体。第十九页,共一百一十一页,编辑于2023年,星期五四、MDI多文档窗体

一个单文档应用程序只能打开一个文档,而一个多文档(MDI)应用程序可以同时打开不同类型的多个文档。MDI应用程序提供了一种方便的方式,使得用户在同一工作区域内可以对多个文档进行观察和交换数据。MDI窗口部分由一个主窗口(也称为父窗口)和多个子窗口组成,每个文档对应一个子窗口。子窗口位于主窗口的工作区内,激活子窗口后主窗口的菜单自动被当前子窗口的菜单所代替。在主窗口的工作区内可以对子窗口进行层叠、平铺、定位、最大化和最小化、改变大小等各种操作,若最大化子窗口,将占满MDI主窗口的全部工作区。

第二十页,共一百一十一页,编辑于2023年,星期五执行【File】→【New】→【Other】菜单项,打开NewItems(新建项目)对话框。这个对话框提供了多个向导和模板,可以生成多种不同用途的应用程序。选择“Projects”选项页,单击“MDIApplication”,然后单击“OK”按钮,生成一个多文档应用程序。系统自动为应用程序生成了三个窗体:主窗体(MainForm)、子窗体(MDIChild)、对话框(AboutBox)。

第二十一页,共一百一十一页,编辑于2023年,星期五五、窗体中组件的操作

1.组件的添加

2.选定组件

3.改变组件的大小

4.对齐组件

5.移动和删除组件

6.组件的复制与粘贴

7.组件的Tab键次序设定

第二十二页,共一百一十一页,编辑于2023年,星期五4.3常用组件第二十三页,共一百一十一页,编辑于2023年,星期五一、Standard页上的常用组件

1.Label标签组件标签组件用于在窗体上显示文字,通常用它为其他组件加上一些标注和说明文字,以便让使用者了解那些组件的用途。特别是有些组件本身没有Caption属性,添加一个标签组件作为提示文字就很有必要。可将标签组件的焦点转移给Form上的另一个对象,方法是设置标签组件的FocusControl属性。在值段中,选用与它关联对象的对象名。然后在标签中设置热键,即在Caption属性值段中输入含有“&”的字串,紧接“&”之后的字母称为热键字母,当用户使用“Alt+热键字母”时,将焦点选中它所指向的对象。

第二十四页,共一百一十一页,编辑于2023年,星期五标签组件常用属性Caption:设定标签中显示的文字AutoSize:为True,标签的长度随文字的长度而改变Transparent:为True,是透明标签,会显示背景颜色Alignment:指定文本在标签矩形框内的水平对齐方式,taLeftJustify(左对齐),taCenter(居中),taRightJustify(右对齐)第二十五页,共一百一十一页,编辑于2023年,星期五Layout:指定文本在标签矩形框内的垂直对齐方式,tlTop(向左对齐),tlCenter(居中),tlButton(向下对齐)WordWrap:为True,文本到达矩形框右边界时自动折返;为False,文本太长时会截断ShowAccelChar:为True,则会在&字符右边的字符加上底线“

”,表示此字符为Label组件的热键字母第二十六页,共一百一十一页,编辑于2023年,星期五2.Edit编辑框组件编辑框组件常用于文本输入输出,不仅可以显示用户的字符串文本,还允许用户输入和编辑文本。在人机交互界面中,使用Edit对象最主要的目的就是接收用户信息,通常用Edit对象输入数据,如输入用户姓名、通信地址等。编辑框组件的常用事件:①OnChange:当编辑框组件中的文本发生改变时触发此事件。②OnKeyPress:当编辑框接收到键盘字符时触发。第二十七页,共一百一十一页,编辑于2023年,星期五编辑框组件常用属性Readonly:决定编辑框内的文本是否可以被编辑。为True时,只能显示文本,不能输入和更改文本BorderStyle:设置编辑框的边框类型:bsSingle,单线边框;bsNone,无边框AutoSelect:当组件获得焦点时,是否自动选中所有的文本AutoSize:指定编辑框的高度是否随文本的高度而改变Enable:为False,编辑框不响应任何事件第二十八页,共一百一十一页,编辑于2023年,星期五PasswordChar:指定一个字符来代替显示用户输入的字符,在用户输入密码时常用MaxLength:编辑框内可输入文字的最大长度。-1表示没有长度限制,默认值为-1SelText:被选中的文本CharCase:设置编辑框文字的大小写状态:ecLowerCase,转为小写;ecNormal,不改变;ecUpperCase,转为大写第二十九页,共一百一十一页,编辑于2023年,星期五编辑框组件的常用方法方法说明Clear清除编辑框内的所有内容ClearSelection清除编辑框内被选中的内容CopyToClipboard将编辑框内选中的文本复制到剪贴板中CutClipboard将编辑框内选中的文本剪切到剪贴板中PasteFromClipboard将剪贴板中的内容粘贴到编辑框中SelectAll选中编辑框内的所有内容第三十页,共一百一十一页,编辑于2023年,星期五3.Memo多行编辑框组件

多行编辑框组件Memo与Edit组件很相像,都是提供给用户在程序中输入数据或显示文字用的对象。与编辑框组件不同的是,多行编辑框组件可以显示和编辑多行文本,而编辑框组件只能显示和编辑一行文本。多行编辑框组件的属性和方法与编辑框组件有很多相同之处,如Text、MaxLength、ReadOnly等属性。第三十一页,共一百一十一页,编辑于2023年,星期五(1)Memo组件的Lines属性Lines属性设置和显示在多行编辑框组件内的文本。在对象监视器窗口单击Line属性旁边的“...”按钮,打开编辑器窗口,在空白区域可以输入多行文本。区域的上方显示输入文本的行数。Text与Lines都用来存取数据,Text存放Memo对象中全部的输入数据,而Lines[i]存放第i+1行的字符串。例如:设置第5行文本值为“Delphi程序设计”程序代码可以写成:Memo1.Lines[4]:=‘Delphi程序设计';。

第三十二页,共一百一十一页,编辑于2023年,星期五Lines常用的属性和方法

Strings属性:指定组件每一行文本的内容Memo1.Lines.Strings[0]:='第一行';等效于Memo1.Lines[0]:=‘第一行’;Add方法:在组件的最后添加一行文本Memo1.Lines.Add('最后一行下面加一行文字');Insert方法:在指定行下方插入一行文本Memo1.Lines.Insert(2,'第三行处插入一行');Delete方法:删除组件内指定行的文本Memol.Lines.Delete(2);//删除第三行第三十三页,共一百一十一页,编辑于2023年,星期五SaveToFile:将文本保存到文件Memo1.Lines.SaveToFile('C:\temp\a.txt');LoadFromFile:读取文件内容到Memo组件中Memo1.Lines.LoadFromFile('C:\temp\a.txt');Clear:清除组件内的所有文本Memo1.Lines.clear;第三十四页,共一百一十一页,编辑于2023年,星期五(2)Memo组件的其他常用属性

ScrollBar:设置是否显示滚动条。有四个值:ssBoth,显示水平和垂直滚动条;ssHorizontal,显示水平滚动条;ssVertical,显示垂直滚动条;ssNone,不加滚动条。WantReturn:设置在组件内部能否使用回车键,为True表示可以使用回车键。WantTab:设置在组件内按Tab键是否起到移位作用,可取True和False两个值第三十五页,共一百一十一页,编辑于2023年,星期五4.Button基本按钮组件按钮是人机交互界面最常见的一个组件,通常用于用户选取执行某项命令。Delphi提供的按钮有基本按钮、位图按钮、复选框、单选按钮、加速按钮等。基本按钮Button是最简单的一种按钮。第三十六页,共一百一十一页,编辑于2023年,星期五(1)Button按钮的常用属性

Caption:按钮上显示的文本Default:设定按钮是否为默认按钮。默认按钮在打开窗体或对话框时首先取得焦点,此时按下Enter键,将执行默认按钮的OnClick事件处理代码。虽然可将多个Button对象指定为默认按钮,但只有Tab次序最前的Button对象才是真正的默认按钮Cancel:设定按钮是否为取消按钮,取消按钮的功能与默认按钮相同,但它是针对Esc键设计的。当用户按下Esc键,被设为取消按钮的OnClick事件处理就会被执行第三十七页,共一百一十一页,编辑于2023年,星期五(2)Button按钮的常用事件

Button按钮常用的响应事件有:OnClick、OnDblClick、OnMouseMove、OnMouseUp、OnMouseDown等。OnClick及OnDblClick处理事件是最常用的。当用户用鼠标在Button对象上单击一下,或是当焦点在Button对象上时按下Enter键,触发OnClick事件处理。因此,可以把单击Button对象后要执行的程序放在这个事件处理中。第三十八页,共一百一十一页,编辑于2023年,星期五[例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设置成取消按钮。

第三十九页,共一百一十一页,编辑于2023年,星期五5.Panel面板组件

Panel组件内,起分组作用。另外,Panel组件提供了优化视觉效果的属性,因此Panel组件也常作为某些组件的背景,使程序界面更协调、优美。面板组件Panel还常用于制作信息栏或状态栏。第四十页,共一百一十一页,编辑于2023年,星期五面板组件Panel的常用属性

Align:固定Panel的位置:alBotton,固定在父组件下方;alCient,覆盖父组件的全部;alLeft,固定在父组件左方;alNone,位置没有限制;alRight,固定在父组件右方;altop,固定在父组件上方BevelInner:确定Panel内层是凸出还是凹下:bvLowered,内层凹下;bvNone,内层无凹凸;bvRaised,内层凸出BevelOuter:确定Panel外层是凸出还是凹下:bvLowered,外层凹下;bvNone,外层无凹凸;bvRaised,外层凸出第四十一页,共一百一十一页,编辑于2023年,星期五BevelWidth:确定Panel内层或外层边界线的粗细,数值越大界线越粗BorderStyle:确定Panel是否有外框。BorderWidth:确定Panel外层部分的宽度,数值越大外层越宽例4-4:利用Panel的属性变化,使Panel产生不同的效果。第四十二页,共一百一十一页,编辑于2023年,星期五6.CheckBox复选框组件复选框有一小方框,旁边带有文本说明,一般具有选中和未选中两种状态,鼠标单击复选框可以在这两种状态之间切换。选中复选框时,小方框内有√标记。

复选框组件通常由多个复选框组件形成一组,在这一组中用户可同时选中多个组件,选项彼此之间是不具有“互斥性”的,不会影响其他选项的行为,适用于要进行多项选择的情况。组件可以识别OnClick事件。

第四十三页,共一百一十一页,编辑于2023年,星期五复选框组件的常用属性

State:指定三种状态:cbChecked,选中;cbUnChecked,未选中;cbGrayed,不确定Checked:为True,则选中,小方框内有√标记;为False则未选中Caption:设置复选框旁边的说明文字第四十四页,共一百一十一页,编辑于2023年,星期五7.单选按钮组件

单选按钮是旁边带有文本说明的小圆圈,具有选中和未选中两种状态。组件的Checked属性值为True时,组件处于选中状态,小圆圈的内部有黑色的小点;为False时,组件处于未选中状态,小圆圈是空心的。在一组单选按钮中,只允许一个单选按钮处于选中状态,也就是说,在同一群组中的选项彼此之间是具有“互斥性”。单选按钮适用于在多个选项中选择一项的情况。第四十五页,共一百一十一页,编辑于2023年,星期五单选按钮组的实现通常用三种方法:

利用GroupBox分组组件+RadioButton单选按钮组件利用Panel面板组件+RadioButton单选按钮组件

利用RadioGroup单选分组框组件,其常用属性有:

Caption:设置显示在组件上方的文字Columns:设置组件的列数,最多可有16个ItemIndex:设置单选分组框中被选中的单选按钮的索引值,从0开始Item:设置单选分组框中单选按钮的标题文字,每行文本代表一个选项。利用提供的方法可以添加(Add)、删除(Delete)、插入(Insert)、交换(Exchange)选项按钮。例4-5:第四十六页,共一百一十一页,编辑于2023年,星期五8.ListBox列表框组件

列表框中可以显示出所有可能的数据供用户选择,用户可以选择其中的一项或多项,因此用户输入数据可以不必使用键盘。列表框组件常用于选项较多的情况。第四十七页,共一百一十一页,编辑于2023年,星期五列表框组件的常用属性

Items:列表框内的选项数据。可以在设计阶段单击属性右边的“...”按钮,在编辑窗口输入选项,一行对应一个选项。程序运行时,可以利用Items对象提供的方法:Add添加一个选项,Delete删除一个选项,Clear删除所有选项,Insert插入一个选项,Move移动选项位置,Exchange交换两个选项的位置。Count:列表框内的选项数据的项数ItemsIndex:选项在Items数组中的编号,从0开始至Count-1第四十八页,共一百一十一页,编辑于2023年,星期五Columns:列表框的列数MultiSelect:是否可以选择多项SelCount:被选中项目的数量Selected:设置或返回某选项是否被选中Sorted:决定列表框的选项是否排序第四十九页,共一百一十一页,编辑于2023年,星期五9.ComboBox组合框组件

组合框组把Edit编辑框和ListBox列表框两者功能合二为一,用户可以直接输入内容,也可以单击向下的箭头后拉出一个列表框,从中选择某个列表项。在组合框中选项数据的新增、删除、移动、选取等等,也是利用Items对象的Add、Delete、Clear、Insert、Exchange、Move等方法完成。第五十页,共一百一十一页,编辑于2023年,星期五组合框组件的常用属性

Items:组合框下拉列表的选项数据。可以在设计阶段单击属性右边的“...”按钮,在编辑窗口输入选项,一行对应一个选项。程序运行时,可以利用Items对象提供的方法:Add添加一个选项,Delete删除一个选项,Clear删除所有选项,Insert插入一个选项,Move移动选项位置,Exchange交换两个选项的位置Count:下拉列表的选项数据的项数ItemsIndex:选项在Items数组中的编号,从0开始至Count-1Text:确定在组合框中显示的文本第五十一页,共一百一十一页,编辑于2023年,星期五Sorted:决定组合框的列表选项是否排序Style:组合框的风格,有几种可供选择的风格:csDropDown,标准风格,用户可以在组合框中输入;csDropDownList,只有列表框,没有编辑框;csOwnerDrawFixed,有编辑框,但只能显示不能输入,也有列表框,每个列表项的高度由ItemHeight属性统一指定;csOwnerDrawVariable,有编辑框,但只能显示不能输入,也有列表框,每个列表项的高度可以不同,可显示非字符串的数据;csSimple,只有编辑框,没有列表框DropDownCount:组合框下拉列表显示选项的最大行数第五十二页,共一百一十一页,编辑于2023年,星期五

[例4-6]:某单位开田径运动会,该单位员工姓名可在ComboBox1的列表框中选取,也可以从键盘输入。所有参赛项目放在ListBox1中供选取,某员工将要参赛的项目从ListBox1中选取至ListBox2,最后将所有员工参赛的项目放在Memo1组件中。第五十三页,共一百一十一页,编辑于2023年,星期五10.ActionList行为列表组件应用程序通常要完成多项指定的任务,Delphi中可以把某项任务指定为一个“行为”。一个应用程序的所有的“行为”常常用ActionList行为列表组件进行管理。设置ActionList的Images属性,就能为ActionList指定一个图像列表(ImageList)对象。利用“行为”列表编辑器可以添加、删除、修改“行为”。每个“行为”都是一个对象,双击某个“行为”可在该“行为”的OnExecute事件中编写相应的执行程序代码。第五十四页,共一百一十一页,编辑于2023年,星期五11.MainMenu主菜单组件

菜单可分为两类:主菜单和弹出式菜单。主菜单又称下拉菜单,由MainMenu组件实现;弹出式菜单由PopupMenu组件实现。MainMenu主菜单组件有两个常用属性:Items(添加菜单项)及Images(指定图形组件用于建立图形菜单)。

第五十五页,共一百一十一页,编辑于2023年,星期五Delphi中使用MainMenu组件创建主菜单的步骤如下:(1)生成主菜单将MainMenu组件放入应用程序的某一窗体中,就在该窗体对象上建立了主菜单对象,默认的名称是MainMenu1。该窗体的Menu属性值也自动设置为MainMenu1。(2)使用菜单编辑器添加菜单项直接双击窗体上的主菜单对象打开菜单编辑器。进人菜单编辑器后,单击空菜单项。每一个菜单项都是一个MenuItem对象,都有自己的属性和方法。第五十六页,共一百一十一页,编辑于2023年,星期五(3)指定菜单加速键和热键鼠标可以操作菜单,还应该允许键盘操作菜单。输入菜单项的Caption属性时,若输入“&+字母”,“&”符号后边的那个字母称为加速字母,运行时加速字母显示成下划线字母,按Alt+加速字母键就执行此菜单项。加速键必须在上层菜单项被激活后才能使用。设置菜单项的ShortCut属性:从其下拉列表中选择一热键组合,程序运行时使用这一热键组合可以直接执行菜单项。第五十七页,共一百一十一页,编辑于2023年,星期五(4)编写菜单项事件代码双击菜单项,进人该菜单项的OnClick事件程序代码中,添加相应的代码,实现菜单的功能。如果应用程序窗体上有ActionList行为列表组件,可以设置菜单项的Action属性。为菜单项指定行为,同样也能实现菜单的功能。第五十八页,共一百一十一页,编辑于2023年,星期五菜单项的常用属性

Name:菜单项对象的名称Caption:菜单项的标题Action:可以为该菜单项指定事件代码以实现该项菜单的功能。通常事件代码是在该菜单项的OnClick事件中编写,但更好的方法是在窗体中加入一个ActionList行为列表组件,为该菜单项指定行为ImageIndex:选取ImageList图形列表组件内的某一图形,指定该菜单项的图形标志Checked:是否在菜单项标题旁边加上标志√ShortCut:指定菜单项的热键第五十九页,共一百一十一页,编辑于2023年,星期五要在菜单中加入一个分隔条,可设置菜单项的Caption属性为“-”。要在某个菜单项的前面插入一个新的菜单项,可先选择此菜单项,然后按Insert键。删除菜单项,可先选择要删除的菜单项,按Delete键。用鼠标拖动菜单项可以调整菜单项的位置。另外,Delphi系统提供菜单模板,右击菜单项,从快捷菜单中选择从模板插入(InsertFromTemplate)可以将菜单模板加入到菜单项。第六十页,共一百一十一页,编辑于2023年,星期五12.PopupMenu弹出式菜单组件PopupMenu组件用来制作弹出式菜单,即在窗口的某个位置右击鼠标,便会在该位置上出现一个菜单——弹出式菜单。一个窗体中,弹出式菜单可以有多个,使用时在某个组件(如Panel)的PopupMenu属性指定弹出式菜单的名称,运行时右击这个组件,就可以打开设定的弹出式菜单。不同的组件可指定不同的弹出式菜单,也可指定同一个弹出式菜单。第六十一页,共一百一十一页,编辑于2023年,星期五弹出式菜单制作过程与主菜单基本相同,所不同的是可以设置弹出式菜单的位置。PopupMenu的属性Alignment用于设置弹出式菜单的位置,其取值说明如下:paCenter:菜单弹出时顶部中点位于鼠标右击点上paLeft:菜单弹出时左上角位于鼠标右击点上paRight:菜单弹出时右上角点位于鼠标右击点上第六十二页,共一百一十一页,编辑于2023年,星期五二.Additional页上的常用组件1.BitBtn位图按钮组件位图按钮与基本按钮的作用相同。基本按钮上只能显示文字,而位图按钮上不仅可以显示文字,还可以显示位图,使界面更加美观。第六十三页,共一百一十一页,编辑于2023年,星期五BitBtn组件的常用属性Caption:位图按钮上显示的文字Kind:确定位图图形的种类,可取11个值。当为bkCustoms时,位图图形由Glyph属性确定。取另外10个值,由系统规定按钮的图形和文字(如图4-15所示)Glyph:确定位图图形文件(*.bmp)Spacing:确定按钮上位图与文字的像素个数。为-1时,文字、位图、按钮成等距离Margin:确定位图与按钮边界之间的像素个数第六十四页,共一百一十一页,编辑于2023年,星期五Layout:位图按钮上文字和图形的布局。为blGlyphLeft,图像在文字的左边;为blGlyphRight,图像在文字的右边;为blGlyphTop,图像在文字的上面;为blGlyphBottom,图像在文字的下面第六十五页,共一百一十一页,编辑于2023年,星期五2.SpeedButton加速按钮组件

加速按钮上也可以显示图形和文字,用法与位图按钮非常相似。其他的按钮如普通按钮、位图按钮在按下后立即弹起,而加速按钮可以在按下后仍保持按下的状态。通常多个加速按钮形成一组,在这一组中只能有一个按钮处于按下状态。因此,加速按钮多用于生成工具栏按钮。第六十六页,共一百一十一页,编辑于2023年,星期五SpeedButton的常用属性Caption:按钮上显示的文字AllowAllUp:为True,允许一组中的所有按钮都可以弹起;为False,一组按钮中有一个是按下状态Down:确定按钮是弹起(False)还是按下(True)状态,同一组只能有一个为TrueGroupIndex:确定加速按钮的组号,为0表示此按钮不属于任何一组。此值相同的按钮将组成同一组Glyph:确定显示在按钮上的位图图形文件(*.bmp)Layout:确定按钮上文字和图形的布局第六十七页,共一百一十一页,编辑于2023年,星期五三、Win32页上的常用组件1.ImageList图形列表组件ImageLlist组件用于管理一组(icons)图标或(bitmaps)位图。同一个ImageList组件中的图形大小相同,默认大小为16╳16像素,因此这些图形适合于作图标。如果ImageList组件中有n个图形,则每个图形都编一个号,编号从0到n-1,通过编号可以访问对应的图形。第六十八页,共一百一十一页,编辑于2023年,星期五ImageList组件的常用属性Height:确定图形的高度,默认值为16像素Width:确定图形的宽度,默认值为16像素BkColor:确定背景颜色BlendColor:确定前景颜色ImageType:默认值为itImage,表示显示原图形;若值为itMask则显示原图形的掩码Masked:值为True表示含有透明图形,值为False则含有不透明图形第六十九页,共一百一十一页,编辑于2023年,星期五利用图形列表编辑器可以向ImageList组件内加载图形。双击ImageList组件可以打开图形列表编辑器。第七十页,共一百一十一页,编辑于2023年,星期五2.ToolBar工具栏组件工具栏把常用的菜单项对应成按钮,并把多个按钮以列表的形式排列成行,用户单击工具栏某个按钮就执行该菜单项的功能,不要到菜单中去找相应的菜单项。工具栏中可以添加按钮(Button)、图形按钮(BitBtn)、加速按钮(SpeedButton)、组合框(ComboBox)、编辑框(Edit)等。工具栏可以放在标题栏或菜单的下面,也可以放在窗口工作区的下面或左边。第七十一页,共一百一十一页,编辑于2023年,星期五使用ToolBar组件建立工具栏的步骤(1)将ToolBar添加到窗体上,生成空白的工具栏。默认位于窗口的顶部,宽度与窗体相同。设置Alignment属性可以改变工具栏的位置。(2)右击ToolBar组件,从弹出式菜单中执行“NewButton”,则在工具栏中添加一个按钮。第七十二页,共一百一十一页,编辑于2023年,星期五工具栏组件常用属性Alignment:确定工具栏相对窗体的位置。默认值为alTop,位于顶部;alLeft,位于左边;alRight,位于右边;alBottom,位于底部;alClient,占满整个窗体;alCustom,用户自定义;alNone,位置没有限制Caption:按钮上显示的文字Flat:默认值为False,表示工具栏上的按钮有边框;值为True表示按钮无边框,程序运行时鼠标移到按钮上面,按钮自动凸出显示第七十三页,共一百一十一页,编辑于2023年,星期五Images:指定工具栏的图形组件(通常是ImageList组件)List:默认值为False,表示图标在按钮的中间,文字在图标的下方;值为True表示图标在按钮的左边,文字在图标的右边ShowCaption:默认值为False,表示按钮上不显示文字;值为True表示按钮上显示Caption属性的文字第七十四页,共一百一十一页,编辑于2023年,星期五工具栏按钮常用属性Down:默认值为False,表示按钮处于弹起状态;值为True表示按钮处于按下状态Grouped:默认值为False,表示按钮不成组;值为True表示按钮成组(一个组中只能有一个按钮处于按下状态)ImageIndex:设定ImageList组件的图标索引号MenuItem:指定本按钮与哪个菜单项相对应Style:确定按钮的风格:TbsButton,按钮任何时候都处于按下状态;TbsCheck,单击按钮变为按下状态,再单击按钮变为弹起状态;Tbsdivider,显示分隔符;TbsDropDown,显示向下的箭头;TbsSeparator,显示为空的分隔符第七十五页,共一百一十一页,编辑于2023年,星期五3.ProgressBar进度条组件进度条组件用来指示一项任务的执行进度,随着任务的进行,在进度条的矩形区域内从左向右填充上小方块,当方块充满整个矩形区域时,表示任务的完成。第七十六页,共一百一十一页,编辑于2023年,星期五进度条组件常见的属性Max:确定进度条的最大数值Min:确定进度条的最小数值Orientation:确定进度条方向。pbHorizontal表示水平方向,pbVertical表示垂直方向Position:取值在min与max之间,表示进度进展情况Smooth:确定方块填充方式是平滑的(True)还是分段的(False)Step:确定进度条的步长,即Position的递增值第七十七页,共一百一十一页,编辑于2023年,星期五进度条组件常见的方法StempBy(Data:Integer):增加Position的值,增加的大小由Data确定StepIt:也能增加Position的值,增加的大小要由Step确定第七十八页,共一百一十一页,编辑于2023年,星期五4.StatusBar状态栏组件状态栏一般位于窗体的底部,用于显示当前状态信息。状态栏组件初始是个空白的状态栏,常常要在状态栏上添加多个状态面板,并在每个状态面板上添加文字作为提示信息。双击状态栏组件,打开面板编辑器,添加状态面板。单击面板编辑器中的“新增”按钮,为状态栏添加状态面板。在对象监视器中,在状态面板的Text属性中输入文字,状态栏中对应的面板上将显示这些文字。第七十九页,共一百一十一页,编辑于2023年,星期五状态栏组件常用属性Alignment:确定状态栏在对窗体的位置。默认值为alBottom,位于底部;alLeft,位于左边;alRight,位于右边;alTop,位于顶部;alClient,占满整个窗体;alCustom,用户自定义;alNone,位置没有限制BorderWidth:状态栏边框的宽度Panels:状态栏中的面板集合第八十页,共一百一十一页,编辑于2023年,星期五状态栏面板常见的属性Alignment:确定文字在状态栏面板中对齐方式Text:确定显示状态栏面板上的文字Width:确定状态栏面板的宽度状态栏的Panels属性也是一个对象,Panels.Items[i].text(i=0,1,2,...)可以用来设置第i个状态栏面板上显示的文字。例4-7:菜单、工具栏、状态栏综合应用第八十一页,共一百一十一页,编辑于2023年,星期五4.4其他组件一、Timer组件

(1)Enable属性:该属性值决定Timer是否有效。如果Enable值为True,则OnTimer事件将发生;如果是False,则OnTimer事件不发生。Enable缺省值是True。

(2)Interval属性:该属性值以毫秒为单位,决定了触发OnTimer事件的时间间隔。缺省值是1000(即1秒),取值范围是0~65535之间的整数。如果将Interval设为0,则没有OnTimer事件发生。(3)OnTimer事件:每经过由Interval属性确定的时间间隔,为该事件编写的处理程序将自动执行一次。例4-8第八十二页,共一百一十一页,编辑于2023年,星期五二、Application组件当一个应用程序运行时,Delphi会自动产生一个Application对象,用来取得或设定和整个应用程序有关的属性。第八十三页,共一百一十一页,编辑于2023年,星期五1)Title、Icon属性属性Icon决定了该应用程序在Windows操作系统中以什么图标显示,图标下方的文本由Title属性决定。在程序设计阶段,这两个属性可由以下方法来设定。在DelphiIDE中,选择执行【Project】→【Options…】菜单项。在“Title”编辑框中改变Title属性值,也可以点击“LoadIcon”按钮来改变应用程序图标。在程序运行阶段,可以用以下代码来设置这两个属性的值:Application.Icon.LoadFromFile('D:\Demo\Myicon.ico');Application.Title:='MyFirstProgram';

第八十四页,共一百一十一页,编辑于2023年,星期五(2)ExeName属性:记录了该应用程序的文件名,以及所在的磁盘名、文件夹名。第八十五页,共一百一十一页,编辑于2023年,星期五三、Canvas组件Delphi的画布对象Canvas提供了大量的绘图功能供设计者使用,它本身并不以控件的方式出现在控件板上,而是以属性的方式依附在其他对象中,我们可以在带有Canvas属性的对象上绘图。第八十六页,共一百一十一页,编辑于2023年,星期五1.Canvas最重要的3个属性Pen属性:该属性同时也是一个对象,绘图时可用于设定线条的颜色、粗细、样式等特性。Brush属性:该属性也是一个对象,用于决定图形的填充图案。Pixels属性:这是一个二维数组,Pixels[x,y]的值决定了画布上像素坐标为(x,y)的点的颜色。如:要把Form1窗口中坐标值为(100,60)的点改为红色。可用语句:Form1.Canvas.Pixels[100,60]:=clRed;注意:画布坐标系的原点是在左上角,以像素为长度单位,画布的右方为X坐标递增方向,下方为Y坐标的递增方向。第八十七页,共一百一十一页,编辑于2023年,星期五Canvas对象的常用属性PenColor:线条颜色Width:画笔宽度,该值越大,画出的线条就越粗Style:线条样式BrushColor:填充图案颜色Style:填充图案样式Pixels:像素点颜色第八十八页,共一百一十一页,编辑于2023年,星期五Delphi中颜色的枚举值及其意义Delphi中线条样式的枚举值及其意义Delphi中填充图案样式的枚举值及其意义第八十九页,共一百一十一页,编辑于2023年,星期五2.Canvas的常用绘图方法MoveTo(x,y:Integer):将画笔的当前位置设置到点(x,y)处。LineTo(x,y:Integer):从当前画笔位置画线至点(x,y),并将画笔的当前位置设置为点(x,y)处。Rectangle(x1,y1:Integer;x2,y2:Integer):从左上角(x1,y1)至右下角(x2,y2)画矩形。Ellipse(x1,y1:Integer;x2,y2:Integer):在左上角(x1,y1)、右下角(x2,y2)的矩形边界上画一椭圆。Polygon(Points:arrayofTPoint):画多边形,多边形的各顶点由数组Points确定。第九十页,共一百一十一页,编辑于2023年,星期五PolyLine(Points:arrayofTPoint):用线段逐一连接由数组Points提供的各点,首尾两点不连接。RoundRect(x1,y1:Integer;x2,y2:Integer;x3,y3:Integer):画圆角矩形。矩形的左上角和右下角由(x1,y1)和(x2,y2)决定。x3和y3分别表示宽和高部分各有多少变为圆弧。TextOut(x,y:Integer;Text:String):在画布的(x,y)处输出一串文字,文字内容由Text确定。例4-10第九十一页,共一百一十一页,编辑于2023年,星期五四、Image组件1.主要属性、方法和事件(1)Picture属性:用于设置在Image对象中显示的图像。在程序设计阶段,可以在对象观察器里点击Picture属性右边的“…”按钮,在弹出的图片编辑器(PictureEditor,图4-30)中调入(Load)、保存(Save)或清除(Clear)图片。在程序的执行阶段,若要存取图片,可调用Picture对象以下两种方法:LoadFromFile(Filename:String)SaveToFile(Filename:String)

第九十二页,共一百一十一页,编辑于2023年,星期五(2)Left

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论