330 likes | 587 Views
第 7 章 面向对象程序设计. 主要内容: 1 、面向对象程序设计的基本概念 2 、表单设计器及其操作方法 3 、表单数据环境及其操作方法 4 、各种控件共有的属性、方法和事件 5 、编程设置属性和调用方法 6 、带参事件及事件的触发顺序 7 、用户自定义属性和方法 8 、表单向导 重点: 1 、面向对象程序设计的基本概念 2 、表单设计器及其操作方法 3 、事件的触发顺序 4 、各种控件共有的属性、方法和事件.
E N D
主要内容: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.事件驱动的工作方式 某事件一旦被触发,系统就去执行该事件对应的过程,当然事件过程的代码需要用户事先编写好;过程执行完毕,则系统又处于等待状态。
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绑定控件表示。而且该对象与字段数据自动实现数据绑定。 所谓数据绑定是指将对象的值与某个数据源联系在一起。这样对象的值便与数据源的值相一致,当对象的值被修改也就意味字段的值被修改,反之也一样。
选定对象 查看类 标签 文本框 编辑框 命令钮 命令按钮组 选项按钮组 复选框 组合框 列表框 微调控件 表格 图象 计时器 页框 Activex绑定控件(oleboundcontrol) Activex控件(olecontrol) 线条 形状 容器 分隔符 超级链接 按钮锁定 生成器锁pg定定 表单控件工具栏 例题对象的添加: ①利用字段映象功能往表单逐个添加字段对象。 ②单击表单控件工具栏的命令钮按钮,单击表单的对应位置,创建Command1对象,依照此方法再创建。 (4)四个辅助按钮 ①选定对象按钮②按钮锁定按钮③查看类 ④生成器锁定按钮
对象组合框 选项卡 4.调整控件的位置 5.设置对象的属性 属性窗口如图所示,包括对象组合框、选项卡、属性设置框、属性列表框、属性说明信息。 属性设置框 属性列表框 属性说明信息 属性窗口的组成
6.事件代码的编写 编写事件代码先要打开代码编辑窗口,打开某对象代码编辑窗口的方法有很多种,具体如下: 方法1:双击该对象。 方法2:选定该对象的快捷菜单的“代码”命令。 方法3:选定“显示”菜单的“代码”命令。 代码编辑窗口中包含两个组合框和一个窗口。 例题事件代码编写:Command1的Click事件代码编写如下: IF RECNO()>1 SKIP -1 THISFORM.REFRESH ELSE MESSAGEBOX("本条记录是首记录!") ENDIF
7.保存表单 表单设计或修改完毕要存盘,存盘方法如下: 保存表单而不退出表单设计器:选择“文件”菜单“保存”命令,若是新创建的表单要输入文件名。 保存表单并退出表单设计器:按Ctrl+W键或单击表单设计器的关闭按钮。若是新创建的表单要输入文件名。 表单文件保存后,将产生扩展名为.SCX的表单文件及扩展名为.SCT的表单备注文件。 8.执行表单 执行表单有多种方法,具体如下: 方法1.表单设计器未关闭时,表单快捷菜单的“执行表单”命令可运行表单。 方法2.用命令DO FORM 表单名 方法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
容器嵌套层次 引用关键字
7.3.2 编程设置属性和调用方法程序 1.编程设置对象属性 设置格式:对象名.属性名=设置值 例:设计如图所示表单,单击“值交换”命令按钮可实现两文本框内值的交换,单击“背景交换”命令按钮可实现两文本框背景颜色的交换。 表单
(1)创建表单:FORM1 (2)添加控件:往FORM1中添加两个标签控件、两个文框控件、两个命令按钮控件。 (3)按表所示为各控件对象设置属性。 (4)编写命令按钮的事件代码 (5) 存盘并运行。
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事件编码: public a(10) &&定义全局变量数组A(10)图7.8例7.3表单 (4)“产生随机数”按钮的CLICK事件编码: temp="" thisform.currentx=2 thisform.currenty=10 thisform.print("10个随机数是:") for i=1 to 10 a(i)=int(rand()*100) &&产生10个100以内的随机整数,放在数组A(10)中 temp=temp+str(a(i),3)+","
endfor thisform.currentx=4 thisform.currenty=30 thisform.print(temp) (5)“排序”按钮的CLICK事件编码: temp="" thisform.currentx=2 thisform.currenty=50 thisform.print("排序如下:") for i=1 to 9 &&利用双重循环,实现数组元素排序 for j=i+1 to 10 if a(i)>a(j) p=a(i)
a(i)=a(j) a(j)=p endif endfor endfor for i=1 to 10 temp=temp+str(a(i),3)+"," endfor thisform.currentx=4 thisform.currenty=70 thisform.print(temp) (6)表单的CLICK事件编码: thisform.cls &&清空表单上显示的数据 (7)表单的UNLOAD事件编码: release a
7.3.3 VFP的事件序列 1.事件序列 VFP是事件驱动的工作方式,VFP的事件或者由用户动作触发或者由系统触发,用户的一个动作可能触发一个或多个事件。这些事件的发生有一定的次序。 例:表单界面如图7.9,有一个命令钮Command1与一个文本框Text1,在表单数据环境中有表STAFF.DBF,用户的动作如下 动作1:运行表单Form1; Form1.Load() Form1.dataenvironment.cursor1.Init() Form1.dataenvironment.Init() Form1.text1.Init() Form1.command1.Init() Form1.Init()
Form1.Activate() Form1.text1.When() Form1.GotFocus() Form1.text1.GotFocus() Form1.Activate() 动作2:在Text1中输入字符AB; Form1.text1.KeyPress(65, 0) &&即A Form1.text1.InteractiveChange() Form1.text1.KeyPress(66, 0) &&即B Form1.text1.InteractiveChange() 动作3:用户单击Command1关闭表单; Form1.text1.Valid()
Form1.command1.When() Form1.text1.LostFocus() Form1.command1.GotFocus() Form1.command1.Click() Form1.command1.Valid() Form1.command1.When() 表单关闭和释放对象之后,将发生的事件,其次序正好与动作1中的事件次序相反。 Form1.Destroy() Form1.command1.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.变量属性 (1)变量属性的创建 选定“表单”菜单的“新建属性”命令以打开新建属性对话框(图1) 。 (2)变量属性的编辑 选定表单菜单的“编辑属性/方法程序”命令可以打开“编辑属性/方法程序”对话框(图2)。
自定义属性 编辑自定义属性
2.数组属性 数组属性的创建、删除、引用格式及作用范围与变量属性一致。不同的是,数组属性在属性窗口中以只读方式显示,因而不能立即赋初初值。但用户仍可通过代码来管理数组,包括对数组属性的赋值、重新设置数组维数等。 7.4.2.用户定义方法程序 1.方法程序的创建 “表单”菜单中选择“新建方法程序”命令,打开的新建方法程序对话框与新建属性对话框类似。 2.过程代码的编写 方法程序创建后,并无代码。用户要为其添加代码,可以在表单的属性窗口中选定某个用户定义的方法,再双击它,即可打开代码编辑窗口对它进行编辑。
7.5 表单向导 1.打开表单向导 主要几个方法: 方法一:使用项目管理器 方法二:使用“工具”菜单 方法三:使用“文件”菜单 2.利用表单向导创建表单 例:使用表单向导创建一个能维护COURSE.DBF的表单。过程如图。
表单向导步骤一 表单向导步骤二 表单向导步骤四 表单向导步骤三