版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 运用组件编程,4.1 可视化组件库VCL 4.2 窗体设计 4.3 常用组件 4.4 其他组件 4.5 输入与输出,4.1 VCL基础,Delphi提供了丰富的组件(component,也称为构件)。这些组件都是由TComponent类派生而来,封装在可视化组件库(VCL)中。这里所说的可视化是指在窗体设计时所有组件的可视性。组件依据程序运行时是否可见而分为可视组件和非可视组件,可视组件如标签(Label)、编辑框(Edit)、按钮(Button)等;非可视组件,如计时器(Timer)、图像列表(ImageList)等。通常,使用可视组件来设计用户界面,用非可视组件来实现特殊的功能。,
2、一、VCL的层次结构,TObject(所有Delphi类的祖先) TPersistent(持久性对象) TComponent(组件对象) 非可视组件 TControl(所有可视组件的祖先) TGraphicControl(图形类对象) TWinControl等 (窗口控件),二、VCL组件的属性、方法和事件 VCL组件的属性 VCL组件的方法 VCL组件的事件,4.2 窗体设计,窗体是程序界面的框架,菜单和组件置于其上。窗体是一种对象,类名是TForm。窗体对象有属性、方法和事件。可以只设计一个窗体的界面,也可以设计多个窗体的界面,甚至可以是多文档窗体。,一、窗体常见的属性、方法及事件,1.
3、窗体的属性 Delphi中通常用两种方法设置对象(窗体)的属性: (1)界面设计阶段通过Object Inspector对象监视器窗口设置属性。先在对象框中选取对象,然后在Properties选项页上修改属性。 (2)在程序代码中用赋值语句设置属性,语法为: 对象名.属性名:=属性值,窗体常见属性,Name:默认值为Form1、Form2、. 大小及位置: Top 和 Left:窗体左上角相对于屏幕的垂直和水平坐标值 Width 和 Height:窗体的总宽度和总高度 Align:窗体相对于屏幕的对齐方式 外观: BorderIcon:窗体标题栏中系统菜单和窗口控制按钮 BorderStyle
4、:窗体边框的类型,Caption:窗体标题栏中显示的标题 Color:窗体工作区的颜色 Font:窗体中显示文字的字体 Visible:窗体是否可见 WindowStyle:窗体的显示状态 状态控制: Enable:窗体的使用状态 FormStyle:窗体的类型,2. 窗体常用方法,(1)Create:动态地创建一个窗体。 (2)Show:显示一个窗体。 (3)Close:关闭一个显示中的窗体。 (4)CloseQuery:判断窗体是否可以关闭,返回一个逻辑值。 (5)Release:将窗体对象从内存中彻底删除。 (6)ShowModal:显示一个模式窗体。 (7)Print:打印窗体。 (8
5、)Canvas:绘制图形、输出文本。,程序中需要窗体完成某种行为动作时,要在程序代码中调用窗体的方法,语法为: 窗体名.方法名(参数列表);,3. 窗体常见事件,窗体事件是窗体可以识别的外部动作,事件可以由用户操作触发,也可以由操作系统、其他应用程序、应用程序本身触发,例如程序运行时用户单击一下窗体将触发窗体的OnClick事件。 在程序源代码中添加窗体的事件,可以打开对象监视器窗口的Events选项页。从对象列表中选择窗体对象,然后双击事件名右边的空白区域,添加窗口事件程序代码。,窗体常见事件,(1)OnCreate:窗体创建时触发。该事件中通常可实现程序的初始化工作。 (2)OnDestr
6、oy:窗体从内存中删除时触发。该事件通常可以加入资源释放的程序代码。 (3)OnShow:窗体显示时触发。当窗体的Visible属性为True时窗体被显示。 (4)OnHide:窗体隐藏时触发。当窗体的Visible属性为False时,窗体被隐藏。 (5)OnClose和OnCloseQuery:当关闭窗体时,先触发OnCloseQuery事件,处理程序当前的状态,然后触发OnClose事件,关闭窗口。,(6)OnClick:单击一下窗体将触发该事件。 (7)OnDblClick:单击窗体将触发该事件。 (8)OnPanit:窗体重画时将触发该事件。,二、简单窗体设计,例4-1:窗体左上角位于
7、屏幕的坐标是120,80;大小是360280;窗体的标题是“简单窗体”,背景颜色是蓝色。程序运行时在窗体的50,30位置输出文本“您好!”,文本的颜色是黄色,字体是楷体_GB2312,一号。单击窗体后,窗体的颜色变成白色,字的颜色是黑色,字体为宋体,大小为50,并在窗体的100,100位置输出文本“再见!”。,三、多窗体设计,1. 静态创建 静态创建窗体是在界面设计阶段完成的。具体方法如下: 执行【File】【New】【Form】菜单项,添加一个新的窗体,默认名称是Form2。然后在主窗体Form1的Uses单元中加入新窗体的单元名,这样在主窗体的事件中可以调用Form2。,2. 动态创建,动
8、态创建窗体是在程序运行阶段完成的。在程序代码中调用窗体的Create方法。静态创建的子窗体在程序刚运行时就全部装人内存当中,如果一个应用程序的子窗体数目很多,将占用过多的内存资源。动态创建的子窗体,在程序刚运行时并没有装入内存中,当使用到该子窗体时才装入内存,使用完后立即将其从内存中释放,以节省内存资源。,(1)执行【File】【New】【Form】菜单项命令一次,添加一个新的窗体,默认名称是Form3在已有的窗体对象名FormN(N=1,2,.)中把N值加1。然后在主窗体Form1的uses单元中加入新窗体的单元名,这样在主窗体的事件中可以调用Form3。 (2)执行【Project】【Op
9、tions】菜单项,打开“Project Options”(工程选项)对话框。对话框的“Auto-create forms(自动创建窗体)”框中列出了在程序运行时加载到内存中的窗体。选择Form3,单击中间向右的箭头按钮,将其移动到“Available forms(可用窗体)”框中。这样程序运行时,Form3窗体不会自动加载到内存。,(3)程序代码中,要使用Form3窗体时,添加如下代码: Form3:=Tform3.Create(self); / 创建子窗体Form3,将Form3加载入内存 Form3.Show; / 显示窗体Form3 (4)要从内存中释放Form3窗体时,添加如下代码:
10、 Form3.Free; / 将Form3从内存中释放掉,例4-2: 创建多窗体应用程序。Form1为主窗体,Form2为静态创建的窗体,Form3为动态创建的窗体。单击Form1窗体显示Form2窗体,双击Form1窗体关闭Form2窗体。单击Form2窗体创建并显示Form3窗体,双击Form2窗体关闭并释放Form3窗体。,四、MDI多文档窗体,一个单文档应用程序只能打开一个文档,而一个多文档(MDI)应用程序可以同时打开不同类型的多个文档。MDI应用程序提供了一种方便的方式,使得用户在同一工作区域内可以对多个文档进行观察和交换数据。MDI窗口部分由一个主窗口(也称为父窗口)和多个子窗口
11、组成,每个文档对应一个子窗口。子窗口位于主窗口的工作区内,激活子窗口后主窗口的菜单自动被当前子窗口的菜单所代替。在主窗口的工作区内可以对子窗口进行层叠、平铺、定位、最大化和最小化、改变大小等各种操作,若最大化子窗口,将占满MDI主窗口的全部工作区。,执行【File】【New】【Other】菜单项,打开New Items(新建项目)对话框。这个对话框提供了多个向导和模板,可以生成多种不同用途的应用程序。 选择“Projects”选项页,单击“MDI Application”,然后单击“OK”按钮,生成一个多文档应用程序。 系统自动为应用程序生成了三个窗体:主窗体(MainForm)、子窗体(MD
12、IChild)、对话框(AboutBox)。,五、窗体中组件的操作,1.组件的添加 2.选定组件 3.改变组件的大小 4.对齐组件 5.移动和删除组件 6.组件的复制与粘贴 7.组件的Tab键次序设定,4.3 常用组件,一、Standard页上的常用组件,1. Label标签组件 标签组件用于在窗体上显示文字,通常用它为其他组件加上一些标注和说明文字,以便让使用者了解那些组件的用途。特别是有些组件本身没有Caption属性,添加一个标签组件作为提示文字就很有必要。 可将标签组件的焦点转移给Form上的另一个对象,方法是设置标签组件的FocusControl属性。在值段中,选用与它关联对象的对象
13、名。然后在标签中设置热键,即在Caption属性值段中输入含有“。,Lines常用的属性和方法,Strings属性:指定组件每一行文本的内容 Memo1.Lines.Strings0 :=第一行; 等效于Memo1.Lines0 :=第一行; Add方法:在组件的最后添加一行文本 Memo1.Lines.Add(最后一行下面加一行文字); Insert方法:在指定行下方插入一行文本 Memo1.Lines.Insert(2,第三行处插入一行); Delete方法:删除组件内指定行的文本 Memol.Lines.Delete(2); / 删除第三行,SaveToFile:将文本保存到文件 Mem
14、o1.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表示可以使用回车键。 WantT
15、ab:设置在组件内按Tab键是否起到移位作用,可取True和False两个值,4. Button基本按钮组件,按钮是人机交互界面最常见的一个组件,通常用于用户选取执行某项命令。Delphi提供的按钮有基本按钮、位图按钮、复选框、单选按钮、加速按钮等。基本按钮Button是最简单的一种按钮。,(1)Button按钮的常用属性,Caption:按钮上显示的文本 Default:设定按钮是否为默认按钮。默认按钮在打开窗体或对话框时首先取得焦点,此时按下Enter键,将执行默认按钮的OnClick事件处理代码。虽然可将多个Button对象指定为默认按钮,但只有Tab次序最前的Button对象才是真正的
16、默认按钮 Cancel:设定按钮是否为取消按钮,取消按钮的功能与默认按钮相同,但它是针对Esc键设计的。当用户按下Esc键,被设为取消按钮的OnClick事件处理就会被执行,(2)Button按钮的常用事件,Button按钮常用的响应事件有:OnClick、OnDblClick、OnMouseMove、OnMouseUp、OnMouseDown等。OnClick及OnDblClick处理事件是最常用的。 当用户用鼠标在Button对象上单击一下,或是当焦点在Button对象上时按下Enter键,触发OnClick事件处理。因此,可以把单击Button对象后要执行的程序放在这个事件处理中。,例4
17、-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.tx
18、t文件中的内容读入Memo1中。应注意将Button1设置成默认按钮,而将Button2设置成取消按钮。,5. Panel面板组件,Panel组件内,起分组作用 。另外,Panel组件提供了优化视觉效果的属性,因此Panel组件也常作为某些组件的背景,使程序界面更协调、优美。面板组件Panel还常用于制作信息栏或状态栏。,面板组件Panel的常用属性,Align:固定Panel的位置:alBotton,固定在父组件下方;alCient,覆盖父组件的全部;alLeft,固定在父组件左方;alNone,位置没有限制;alRight,固定在父组件右方;altop,固定在父组件上方 BevelInne
19、r:确定Panel内层是凸出还是凹下:bvLowered,内层凹下;bvNone,内层无凹凸;bvRaised,内层凸出 BevelOuter:确定Panel外层是凸出还是凹下:bvLowered,外层凹下;bvNone,外层无凹凸;bvRaised,外层凸出,BevelWidth:确定Panel内层或外层边界线的粗细,数值越大界线越粗 BorderStyle:确定Panel是否有外框。 BorderWidth:确定Panel外层部分的宽度,数值越大外层越宽 例4-4:利用Panel的属性变化,使Panel产生不同的效果。,6. CheckBox复选框组件,复选框有一小方框,旁边带有文本说明,
20、一般具有选中和未选中两种状态,鼠标单击复选框可以在这两种状态之间切换。选中复选框时,小方框内有标记。 复选框组件通常由多个复选框组件形成一组,在这一组中用户可同时选中多个组件,选项彼此之间是不具有“互斥性”的,不会影响其他选项的行为,适用于要进行多项选择的情况。组件可以识别OnClick事件。,复选框组件的常用属性,State:指定三种状态:cbChecked,选中;cbUnChecked,未选中;cbGrayed,不确定 Checked:为True,则选中,小方框内有标记;为False则未选中 Caption:设置复选框旁边的说明文字,7. 单选按钮组件,单选按钮是旁边带有文本说明的小圆圈,
21、具有选中和未选中两种状态。组件的Checked属性值为True时,组件处于选中状态,小圆圈的内部有黑色的小点;为False时,组件处于未选中状态,小圆圈是空心的。 在一组单选按钮中,只允许一个单选按钮处于选中状态,也就是说,在同一群组中的选项彼此之间是具有“互斥性”。单选按钮适用于在多个选项中选择一项的情况。,单选按钮组的实现通常用三种方法:,利用GroupBox分组组件+ RadioButton单选按钮组件 利用Panel面板组件+ RadioButton单选按钮组件 利用RadioGroup单选分组框组件, 其常用属性有: Caption:设置显示在组件上方的文字 Columns:设置组件
22、的列数,最多可有16个 ItemIndex:设置单选分组框中被选中的单选按钮的索引值,从0开始 Item:设置单选分组框中单选按钮的标题文字,每行文本代表一个选项。利用提供的方法可以添加(Add)、删除(Delete)、插入(Insert)、交换(Exchange)选项按钮。 例4-5:,8. ListBox列表框组件,列表框中可以显示出所有可能的数据供用户选择,用户可以选择其中的一项或多项,因此用户输入数据可以不必使用键盘。列表框组件常用于选项较多的情况。,列表框组件的常用属性,Items:列表框内的选项数据。可以在设计阶段单击属性右边的“.”按钮,在编辑窗口输入选项,一行对应一个选项。程序
23、运行时,可以利用Items对象提供的方法:Add添加一个选项,Delete删除一个选项,Clear删除所有选项,Insert插入一个选项,Move移动选项位置,Exchange交换两个选项的位置。 Count:列表框内的选项数据的项数 ItemsIndex:选项在Items数组中的编号,从0开始至Count-1,Columns:列表框的列数 MultiSelect:是否可以选择多项 SelCount:被选中项目的数量 Selected:设置或返回某选项是否被选中 Sorted:决定列表框的选项是否排序,9. ComboBox组合框组件,组合框组把Edit编辑框和ListBox列表框两者功能合二
24、为一,用户可以直接输入内容,也可以单击向下的箭头后拉出一个列表框,从中选择某个列表项。 在组合框中选项数据的新增、删除、移动、选取等等,也是利用Items对象的Add、Delete、Clear、Insert、Exchange、Move等方法完成。,组合框组件的常用属性,Items:组合框下拉列表的选项数据。可以在设计阶段单击属性右边的“.”按钮,在编辑窗口输入选项,一行对应一个选项。程序运行时,可以利用Items对象提供的方法:Add添加一个选项,Delete删除一个选项,Clear删除所有选项,Insert插入一个选项,Move移动选项位置,Exchange交换两个选项的位置 Count:下
25、拉列表的选项数据的项数 ItemsIndex:选项在Items数组中的编号,从0开始至Count-1 Text:确定在组合框中显示的文本,Sorted:决定组合框的列表选项是否排序 Style:组合框的风格,有几种可供选择的风格:csDropDown,标准风格,用户可以在组合框中输入;csDropDownList,只有列表框,没有编辑框;csOwnerDrawFixed,有编辑框,但只能显示不能输入,也有列表框,每个列表项的高度由ItemHeight属性统一指定;csOwnerDrawVariable,有编辑框,但只能显示不能输入,也有列表框,每个列表项的高度可以不同,可显示非字符串的数据;c
26、sSimple,只有编辑框,没有列表框 DropDownCount:组合框下拉列表显示选项的最大行数,例4-6:某单位开田径运动会,该单位员工姓名可在ComboBox1的列表框中选取,也可以从键盘输入。所有参赛项目放在ListBox1中供选取,某员工将要参赛的项目从ListBox1中选取至ListBox2,最后将所有员工参赛的项目放在Memo1组件中。,10. ActionList行为列表组件,应用程序通常要完成多项指定的任务,Delphi中可以把某项任务指定为一个“行为”。一个应用程序的所有的“行为”常常用ActionList行为列表组件进行管理。设置ActionList的Images属性,
27、就能为ActionList指定一个图像列表(ImageList)对象。 利用“行为”列表编辑器可以添加、删除、修改“行为”。每个“行为”都是一个对象,双击某个“行为”可在该“行为”的OnExecute事件中编写相应的执行程序代码。,11. MainMenu主菜单组件,菜单可分为两类:主菜单和弹出式菜单。主菜单又称下拉菜单,由MainMenu组件实现;弹出式菜单由PopupMenu组件实现。 MainMenu主菜单组件有两个常用属性:Items(添加菜单项)及Images(指定图形组件用于建立图形菜单)。,Delphi中使用MainMenu组件创建主菜单的步骤如下:,(1)生成主菜单 将Main
28、Menu组件放入应用程序的某一窗体中,就在该窗体对象上建立了主菜单对象,默认的名称是MainMenu1。该窗体的Menu属性值也自动设置为MainMenu1。 (2)使用菜单编辑器添加菜单项 直接双击窗体上的主菜单对象打开菜单编辑器。进人菜单编辑器后,单击空菜单项。每一个菜单项都是一个MenuItem对象,都有自己的属性和方法。,(3)指定菜单加速键和热键 鼠标可以操作菜单,还应该允许键盘操作菜单。输入菜单项的Caption属性时,若输入 “ 注意:画布坐标系的原点是在左上角,以像素为长度单位,画布的右方为X坐标递增方向,下方为Y坐标的递增方向。,Canvas对象的常用属性,Pen Color
29、:线条颜色 Width:画笔宽度,该值越大,画出的线条就越粗 Style:线条样式 Brush Color:填充图案颜色 Style:填充图案样式 Pixels:像素点颜色,Delphi中颜色的枚举值及其意义 Delphi中线条样式的枚举值及其意义 Delphi中填充图案样式的枚举值及其意义,2. Canvas的常用绘图方法,MoveTo(x, y: Integer):将画笔的当前位置设置到点(x, y)处。 LineTo(x, y: Integer):从当前画笔位置画线至点(x, y),并将画笔的当前位置设置为点(x, y)处。 Rectangle(x1, y1:Integer; x2, y
30、2: Integer):从左上角(x1, y1)至右下角(x2,y2)画矩形。 Ellipse(x1, y1: Integer; x2, y2: Integer):在左上角(x1, y1)、右下角(x2, y2)的矩形边界上画一椭圆。 Polygon(Points: array of TPoint):画多边形,多边形的各顶点由数组Points确定。,PolyLine(Points: array of TPoint):用线段逐一连接由数组Points提供的各点,首尾两点不连接。 RoundRect(x1, y1: Integer; x2, y2: Integer; x3, y3: Integer
31、):画圆角矩形。矩形的左上角和右下角由(x1, y1)和(x2, y2)决定。x3和y3分别表示宽和高部分各有多少变为圆弧。 TextOut(x, y: Integer; Text: String):在画布的(x, y)处输出一串文字,文字内容由Text确定。 例4-10,四、Image组件,1. 主要属性、方法和事件 (1)Picture属性:用于设置在Image对象中显示的图像。在程序设计阶段,可以在对象观察器里点击Picture属性右边的“”按钮,在弹出的图片编辑器(Picture Editor,图4-30)中调入(Load)、保存(Save)或清除(Clear)图片。 在程序的执行阶段
32、,若要存取图片,可调用Picture对象以下两种方法: LoadFromFile(Filename:String) SaveToFile(Filename:String),(2)Left、Top、Height、Width属性 在程序运行时改变Left、Top属性的值,可以实现在窗口上移动图像的效果。Height和Width分别决定了Image边框的高度和宽度。 (3)AutoSize、Stretch属性 由于被装入Image对象的图像大小与由Height和Width决定的Image边框的大小不一定会一样。 如果把AutoSize属性值设为True,则Image边框的范围会自动调整到和图像大小一样。 如果把Stretch属性值设为True,则图像会放大或缩小成和Image边框大小相同。,4.5 输入与输出,一、输入、输出对话框 1. 信息对话框 ShowMessage过程: ShowMessage(); 例:ShowMessage(日期输入错误,请按如下格式输入:+ #13 + 1999-03-29);,MessageDlg函教 :=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经编机操作工岗位标准化考核试卷含答案
- 2026事业单位工勤技能-甘肃-甘肃计算机信息处理员四级中级历年参考题库含答案详解
- 2026事业单位工勤技能-甘肃-甘肃无损探伤工三级(高级工)历年参考题库含答案详解
- 2026事业单位工勤技能-湖南-湖南客房服务员一级(高级技师)历年参考题库含答案详解
- 2026事业单位工勤技能-湖北-湖北水工监测工一级(高级技师)历年参考题库含答案详解
- 2026事业单位工勤技能-浙江-浙江理疗技术员二级(技师)历年参考题库含答案详解
- 年产2400吨溴虫腈项目可行性研究报告模板-立项申报用
- 广西壮族自治区南宁市2026年九年级上学期语文期中试卷附答案
- 2026年中小学爱国知识竞赛试题含答案
- 2026年四川省考《申论》真题及答案解析(行政执法卷)
- 2026年高考(北京卷)语文试题及答案
- 江南大学介绍
- 行书课件教学课件
- 2025年秋季学期国家开放大学《理工英语4》形考任务综合测试完整答案(不含听力部分)
- 2025年山东事业编考试真题(附答案)
- 2025国考北京证监会计专业科目高频考点及答案
- 河南省安全生产考试点合规性检查表
- 装配钳工试题题库及答案
- GB/T 45602-2025船舶与海洋技术可调式滚轮闸刀掣链器
- 2025水土保持监测技术规范
- 2.2.1不等式及其性质 高一数学(人教B版2019必修第一册)
评论
0/150
提交评论