



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
面向对象程序设计主要内容:
1、面向对象程序设计的基本概念
2、表单设计器及其操作方法
3、表单数据环境及其操作方法
4、各种控件共有的属性、方法和事件
5、编程设置属性和调用方法
6、带参事件及事件的触发顺序
7、用户自定义属性和方法
8、表单向导
重点:
1、面向对象程序设计的基本概念
2、表单设计器及其操作方法
3、事件的触发顺序
4、各种控件共有的属性、方法和事件
难点:
1、面向对象程序设计的基本概念
2、事件的触发顺序及触发方式
3、用户自定义属性和方法
要求:
1、掌握面向对象程序设计的基本概念
2、学会使用表单设计器设计表单
3、掌握表单数据环境的概念及其操作方法
4、掌握各种控件共有的属性、方法和事件
5、掌握编程设置属性和调用方法的方法
6、了解带参事件代码的编写、掌握事件的触发顺序
7、了解用户自定义属性和方法
8、学会使用表单向导创建表单,并进一步使用表单设计
器进行修改的方法
7.1面向对象程序设计基本概念
1.类类是一类相似对象的抽象,是用来创建对象的模板。
2.对象:是类的实例,准确地讲,对象是一个软件实体。
VFP中,常用的基类对象共有21个,分为控件类与容器类两种。(1)控件:是表单上显示数据和执行操作的基本对象,例如:命令按钮、文本框、标签等。(2)容器:是可以容纳其他对象的对象。例如:表单集、表单、选项按钮组、命令按钮组等。
3.属性对象的属性用来表示对象的特征、状态。
4.方法对象的方法是对象内定的通用过程,能使对象执行一个操作。
5.事件事件是一种预先定义的好的特定动作,可由用户或系统触发。
6.事件驱动的工作方式某事件一旦被触发,系统就去执行该事件对应的过程,当然事件过程的代码需要用户事先编写好;过程执行完毕,则系统又处于等待状态。容器能包含的对象表单集表单、工具栏表单页框、表格、任何控件页框页面页面表格、任何控件表格表格列表格列标头对象、除表单、表单集、工具栏、计时器和列对象以外的对象选项按钮组选项按钮命令按钮组命令按钮工具栏任何控件、页框、容器Container容器任何控件容器及包含的对象
事件触发时机事件触发时机Load创建对象前MouseUp释放鼠标键时Init创建对象时MouseDown按下鼠标键时Activate对象激活时MouseMove拖动鼠标时Gotfocus对象得到焦点时KeyPress按下并释放某键盘键时Click单击鼠标左键时Valid对象失去焦点前DblClick双击鼠标左键时LostFocus对象失去焦点时InteractiveChange当用户通过键盘或鼠标改变一个控件的值时Unload释放对象时
Vfp部分常见事件列表
7.2
表单设计器7.2.1表单设计器工具
1.表单设计器的功能与特点:(1)创建表单及表单上的各个对象。(2)修改已有的表单。(3)操作方便与可视化。2.表单设计工具可供表单设计使用的各要素与工具:(1)表单设计器窗口与表单窗口:多数设计工作将在表单窗口中完成。(2)属性窗口:可以完成对象属性的设置与修改。(3)代码编辑窗口:供用户编写事件或方法的程序代码。(4)各种工具栏(5)数据环境设计器窗口:为表单创建或修改数据环境。(6)快捷菜单:不同对象有不同快捷菜单帮助完成经常性工作。(7)动态菜单表单设计器
7.2.2表单的创建与表单设计器的操作
表单的创建一般步骤为:打开表单设计器→设置数据环境→添加对象→调整对象的位置→设置对象属性→编写事件代码→保存表单→执行表单。例:为STAFF表创建一如图表单,以实现对表中记录的逐条浏览与编辑。教师表浏览
1.打开表单设计器2.设置数据环境(1)数据环境概念数据环境泛指定义表单或表单集使用的数据源,可以是表、视图和表间关系。(2)数据环境设计器打开打开数据环境设计器可使用表单快捷菜单的“数据环境”命令,或选定“显示”菜单的数据环境命令。(3)数据环境设计器快捷菜单与数据环境菜单数据环境菜单提供了几个命令,具有查看和修改数据环境的功能①添加命令②移去命令③浏览命令例题数据环境的设置:①选定表单快捷菜单的“数据环境”命令以打开数据环境设计器。②选定“添加表或视图”对话框的STAFF表,选定“添加”按钮。
3.对象的添加在VFP中实现对象创建的主要工具是表单控件工具栏。(1)表单控件工具栏(2)对象的创建(3)字段映象字段映象:指当用户打开数据环境设计器窗口,选定表中的任一字段,将其拖至表单窗口中释放,将在对应位置产生两个对象,一个是标签对象,用来显示字段名或字段标题;另一个对象类型则取决定于字段类型,字符型、数值型、日期型等用文本框对象表示,逻辑型用复选框表示,备注型用编辑框表示,通用型用ActiveX绑定控件表示。而且该对象与字段数据自动实现数据绑定。所谓数据绑定是指将对象的值与某个数据源联系在一起。这样对象的值便与数据源的值相一致,当对象的值被修改也就意味字段的值被修改,反之也一样。
例题对象的添加:①利用字段映象功能往表单逐个添加字段对象。②单击表单控件工具栏的命令钮按钮,单击表单的对应位置,创建Command1对象,依照此方法再创建。(4)四个辅助按钮①选定对象按钮②按钮锁定按钮③查看类④生成器锁定按钮表单控件工具栏选定对象文本框命令钮选项按钮组组合框图象Activex绑定控件(oleboundcontrol)分隔符按钮锁定微调控件页框形状查看类标签编辑框命令按钮组复选框列表框表格计时器Activex控件(olecontrol)线条容器超级链接生成器锁pg定定
4.调整控件的位置5.设置对象的属性
属性窗口如图所示,包括对象组合框、选项卡、属性设置框、属性列表框、属性说明信息。属性窗口的组成属性列表框属性设置框选项卡对象组合框属性说明信息
6.事件代码的编写编写事件代码先要打开代码编辑窗口,打开某对象代码编辑窗口的方法有很多种,具体如下:方法1:双击该对象。方法2:选定该对象的快捷菜单的“代码”命令。方法3:选定“显示”菜单的“代码”命令。代码编辑窗口中包含两个组合框和一个窗口。例题事件代码编写:Command1的Click事件代码编写如下:
IFRECNO()>1 SKIP-1 THISFORM.REFRESHELSE MESSAGEBOX("本条记录是首记录!")
ENDIF
7.保存表单表单设计或修改完毕要存盘,存盘方法如下:保存表单而不退出表单设计器:选择“文件”菜单“保存”命令,若是新创建的表单要输入文件名。保存表单并退出表单设计器:按Ctrl+W键或单击表单设计器的关闭按钮。若是新创建的表单要输入文件名。表单文件保存后,将产生扩展名为.SCX的表单文件及扩展名为.SCT的表单备注文件。8.执行表单执行表单有多种方法,具体如下:方法1.表单设计器未关闭时,表单快捷菜单的“执行表单”命令可运行表单。方法2.用命令DOFORM表单名方法3.在项目管理器中选定要执行的表单→选定“运行”按钮。7.3事件代码编写
VFP的事件代码由VFP命令、属性设置语句、方法与事件的调用语句构成。7.3.1在容器分层结构中引用对象
1.对象的容器层次
VFP的对象分为容器类和控件类,VFP规定,在容器分层结构中引用对象必须提供对象的地址,即指明它相对于容器分层结构的关系。图1是一种可能的嵌套。2.对象相对引用规则
VFP为了方便在容器分层结构中引用对象,提供并规定了一些关键字及引用格式。(1)引用关键字(图2)3.引用格式引用格式:引用关键字.对象名.对象的属性、事件或方法程序(1)引用可以是单级的。例:THIS.Caption(2)引用也可以是多级的,但要逐级引用。例:THISFORM.Text1.Caption(3)控件也可引用包含它的容器。例:THIS.PARENT.Caption关键字引用THIS引用该对象THISFORM引用包含该对象的表单THISFORMSET引用包含该对象的表单集PARENT引用包含该对象的直接容器容器嵌套层次
引用关键字
7.3.2编程设置属性和调用方法程序
1.编程设置对象属性设置格式:对象名.属性名=设置值例:设计如图所示表单,单击“值交换”命令按钮可实现两文本框内值的交换,单击“背景交换”命令按钮可实现两文本框背景颜色的交换。表单
(1)创建表单:FORM1(2)添加控件:往FORM1中添加两个标签控件、两个文框控件、两个命令按钮控件。(3)按表所示为各控件对象设置属性。(4)编写命令按钮的事件代码(5)存盘并运行。对象名属性属性值说明LABEL1CAPTIONA=指定标签显示文本LABEL1CAPTIONB=指定标签显示文本TEXT1VALUE12345为TEXT1指定值BACKCOLORRGB(255,0,0)为TEXT1指定背景色TEXT2VALUEABCDEBACKCOLORRGB(0,255,255)COMMAND1CAPTION值交换指定命令钮标题COMMAND2CAPTION背景交换指定命令钮标题
2.编程调用对象方法程序调用格式:格式:对象名.方法程序名[(参数1[,参数2[,……]])](1)Cls方法格式:OBJECT.Cls
功能:清除表单上的图形或文本。(2)Print方法格式:OBJECT.Print[(cText)]
功能:在表单上打印字符串。例:建立如图7.8所示表单,单击“产生随机数”按钮,会在表单上显示10个0至100之间的随机整数,单击“排序”按钮,将在表单上显示对这10个数的排序结果,单击表单空白处则清除表单上显示的数据。
(1)新建表单FORM1(2)往FORM1中添加两个命令按钮控件,并修改其CAPTION属性。(3)表单的LOAD事件编码:publica(10)&&定义全局变量数组A(10)图7.8例7.3表单(4)“产生随机数”按钮的CLICK事件编码:temp=""thisform.currentx=2thisform.currenty=10thisform.print("10个随机数是:")fori=1to10a(i)=int(rand()*100)&&产生10个100以内的随机整数,放在数组A(10)中
temp=temp+str(a(i),3)+","endforthisform.currentx=4thisform.currenty=30thisform.print(temp)(5)“排序”按钮的CLICK事件编码:temp=""thisform.currentx=2thisform.currenty=50thisform.print("排序如下:")fori=1to9&&利用双重循环,实现数组元素排序
forj=i+1to10 ifa(i)>a(j) p=a(i)a(i)=a(j) a(j)=p
endif endforendforfori=1to10temp=temp+str(a(i),3)+","endforthisform.currentx=4thisform.currenty=70thisform.print(temp)(6)表单的CLICK事件编码:thisform.cls&&清空表单上显示的数据(7)表单的UNLOAD事件编码:releasea7.3.3VFP的事件序列
1.事件序列
VFP是事件驱动的工作方式,VFP的事件或者由用户动作触发或者由系统触发,用户的一个动作可能触发一个或多个事件。这些事件的发生有一定的次序。例:表单界面如图7.9,有一个命令钮Command1与一个文本框Text1,在表单数据环境中有表STAFF.DBF,用户的动作如下动作1:运行表单Form1;Form1.Load()Form1.dataenvironment.cursor1.Init()Form1.dataenvironment.Init()Form1.text1.Init()Fmand1.Init()Form1.Init()Form1.Activate()Form1.text1.When()Form1.GotFocus()Form1.text1.GotFocus()Form1.Activate()动作2:在Text1中输入字符AB;Form1.text1.KeyPress(65,0)&&即AForm1.text1.InteractiveChange()Form1.text1.KeyPress(66,0)&&即BForm1.text1.InteractiveChange()动作3:用户单击Command1关闭表单;Form1.text1.Valid()Fmand1.When()Form1.text1.LostFocus()Fmand1.GotFocus()Fmand1.Click()Fmand1.Valid()Fmand1.When()表单关闭和释放对象之后,将发生的事件,其次序正好与动作1中的事件次序相反。Form1.Destroy()Fmand1.Destroy()Form1.text1.Destroy()Form1.Unload()Form1.dataenvironment.AfterCloseTables()Form1.dataenvironment.Destroy()Form1.dataenvironment.cursor1.Destroy()
2.为事件指定代码的位置从上例可知,事件发生时,若没有与之相关联的代码,不会发生任何操作。3.焦点(Focus)
在上例中有许多的事件发生都与焦点有关4.TAB键次序在表单运行时,用户可以使用TAB键来移动表单内光标的位置。所谓TAB键次序,就是按TAB键时光标经过表单中控件的顺序。
7.4用户自定义属性和方法程序
7.4.1用户定义属性针对表单和表单集对象,VFP允许用户向它们添加自定义的属性,用户自定义属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论