vfp第7章 面向对象程序设计_第1页
vfp第7章 面向对象程序设计_第2页
vfp第7章 面向对象程序设计_第3页
vfp第7章 面向对象程序设计_第4页
vfp第7章 面向对象程序设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、本讲内容本讲内容 第第7章章 面向对象程序设计面向对象程序设计 7.1 面向对象程序设计基本概念 1.对象:构成应用程序的任何可操作的实体,如表、窗口、对话框等。对象:构成应用程序的任何可操作的实体,如表、窗口、对话框等。 VFP中,常用的对象共有21个,分为控件类与容器类两种。 (1)控件:是表单(FORM,即窗口样式,用于提供操作界面)上显示数据和执 行操作的基本对象,例如:命令按钮、文本框、标签等。 (2)容器:是可以容纳其他对象的对象。例如:选项按钮组、命令按钮组等。 2.属性属性 对象的属性用来表示对象的特征、状态。如命令按钮有位置、大小等 3.方法方法 对象的方法是对象内定的通用过

2、程,能使对象执行一个操作。如:调用表单的Release方法能将表单从内存释放。可理解为内部函数。 4.事件事件 事件是指对象能识别并能响应的一些预先定义好的动作,可由用户或系统触发。如:单击鼠标等。 5.事件驱动的工作方式事件驱动的工作方式 某事件一旦被触发,系统就去执行该事件对应的过程代码,当然事件过程的代码需要用户事先编写好;过程执行完毕,则系统又处于等待状态。 面向对象程序设计不同于传统的面向过程程序设计,不再是单纯地从代码的第一行编到最后一行,而是考虑如何创建对象,利用对象来简化程序设计。容器能包含的对象表单集表单、工具栏表单页框、表格、任何控件页框页面页面表格、任何控件表格表格列表格

3、列标头对象、除表单、表单集、工具栏、计时器和列对象以外的对象选项按钮组选项按钮命令按钮组命令按钮工具栏任何控件、页框、容器Container容器任何控件事件触发时机事件触发时机Load创建对象前MouseUp释放鼠标键时Init创建对象时MouseDown按下鼠标键时Activate对象激活时MouseMove拖动鼠标时Gotfocus对象得到焦点时KeyPress按下并释放某键盘键时Click单击鼠标左键时Valid对象失去焦点前DblClick双击鼠标左键时LostFocus对象失去焦点时InteractiveChange当用户通过键盘或鼠标改变一个控件的值时Unload释放对象时 Vfp

4、部分常见事件列表 容器及包含的对象 7.2.1 表单设计器的工具 1.表单设计器的功能与特点: (1)创建表单及表单上的各个对象。 (2)修改已有的表单。 (3)操作方便与可视化。 2.表单设计工具 可供表单设计使用的各要素与工具: (1)表单设计器窗口与表单窗口:多数设计工作将在表单窗口中完成。 (2)属性窗口:可以完成对象属性的设置与修改。 (3)代码编辑窗口:供用户编写事件或方法的程序代码。 (4)各种工具栏 (5)数据环境设计器窗口:为表单创建或修改数据环境。 (6)快捷菜单:不同对象有不同快捷菜单帮助完成经常性工作。 (7)动态菜单 表单设计器 7.2.2 表单的创建与表单设计器的操

5、作 表单的创建一般步骤为:打开表单设计器设置数据环境添加对象调整对象的位置设置对象属性编写事件代码保存表单执行表单。 例:(P166) 1.打开表单设计器:三种方法(打开表单设计器:三种方法(P167) 2.设置数据环境设置数据环境 (1)数据环境概念 数据环境泛指定义表单使用的数据源,可以是表、视图和表间关系。 (2)数据环境设计器打开 打开数据环境设计器可使用表单快捷菜单的“数据环境”命令,或选定“显示”菜单的数据环境命令。 (3)数据环境设计器快捷菜单与数据环境菜单 数据环境菜单提供了几个命令,具有查看和修改数据环境的功能 添加命令 移去命令 浏览命令 例题数据环境的设置: 选定表单快捷

6、菜单的“数据环境”命令以打开数据环境设计器。 选定“添加表或视图”对话框的STAFF表,选定“添加”按钮。 3.对象的添加对象的添加 在VFP中实现对象创建的主要工具是表单控件工具栏(介绍)与字段映象。 (1)利用表单控件工具栏添加对象 (2)利用字段映象添加对象 字段映象:指当用户打开数据环境设计器窗口,选定表中的任一字段,将其拖至表单窗口中释放,将在对应位置产生两个对象,一个是标签对象,用来显示字段名或字段标题;另一个对象类型则取决定于字段类型,字符型、数值型、日期型等用文本框对象表示,逻辑型用复选框表示,备注型用编辑框表示,通用型用ActiveX绑定控件表示。而且该对象与字段数据自动实现

7、数据绑定。 所谓数据绑定是指将对象的值与某个数据源联系在一起。这样对象的值便与数据源的值相一致,当对象的值被修改也就意味字段的值被修改,反之也一样。 例题对象的添加: 利用字段映象功能往表单逐个添加字段对象。 单击表单控件工具栏的命令钮按钮,单击表单的对应位置,创建Command1对象,依照此方法再创建。 (4)四个辅助按钮 选定对象按钮按钮锁定按钮查看类 生成器锁定按钮 表单控件工具栏表单控件工具栏选定对象选定对象文本框文本框命令钮命令钮选项按钮组选项按钮组组合框组合框图象图象Activex绑定控件(oleboundcontrol)分隔符分隔符按钮锁定按钮锁定微调控件微调控件页框页框形状形状

8、查看类查看类标签标签编辑框编辑框命 令 按 钮命 令 按 钮组组复选框列表框列表框表格表格计时器计时器Activex控件(olecontrol)线条线条容器容器超级链接超级链接生成器锁生成器锁pg定定定定 4.调整控件的位置调整控件的位置 5.设置对象的属性设置对象的属性 (本例如P174) 属性窗口如图所示,包括对象组合框、选项卡、属性设置框、属性列表框、属性说明信息。属性窗口的组成属性列表框属性列表框属性设置框属性设置框选项卡选项卡对象组合框对象组合框属 性 说 明 信属 性 说 明 信息息 6.事件代码的编写(本例代码见事件代码的编写(本例代码见P174) 编写事件代码先要打开代码编辑窗

9、口,打开某对象代码编辑窗口的方法有很多种,具体如下: 方法1:双击该对象。 方法2:选定该对象的快捷菜单的“代码”命令。 方法3:选定“显示”菜单的“代码”命令。 代码编辑窗口中包含两个组合框和一个窗口。 例题事件代码编写:Command1的Click事件代码编写如下: IF RECNO()1 SKIP -1 THISFORM.REFRESH ELSE MESSAGEBOX(本条记录是首记录!) ENDIF 7.保存表单保存表单 表单设计或修改完毕要存盘,存盘方法如下: 保存表单而不退出表单设计器:选择“文件”菜单“保存”命令,若是新创建的表单要输入文件名。 保存表单并退出表单设计器:按Ctr

10、l+W键或单击表单设计器的关闭按钮。若是新创建的表单要输入文件名。 表单文件保存后,将产生扩展名为.SCX的表单文件及扩展名为.SCT的表单备注文件。 8.执行表单执行表单 执行表单有多种方法,具体如下: 方法1.表单设计器未关闭时,表单快捷菜单的“执行表单”命令可运行表单。 方法2.用命令DO FORM 表单名 方法3.在项目管理器中选定要执行的表单选定“运行”按钮。 作业:设置E:学生表为默认目录,完成例7.1的操作。 7.3 事件代码编写 VFP的事件代码由VFP命令、属性设置语句、方法与事件的调用语句构成。 7.3.1 在容器分层结构中引用对象 1.对象的容器层次 VFP的对象分为容器

11、类和控件类,VFP规定,在容器分层结构中引用对象必须提供对象的地址,即指明它相对于容器分层结构的关系。图1是一种可能的容器嵌套方式。 2.对象引用规则 VFP为了方便在容器分层结构中引用对象,提供并规定了一些关键字及引用格式。 (1)引用关键字列表(图2) 3.引用格式引用格式 引用格式:引用关键字.对象名.对象的属性、事件或方法程序 (1)引用可以是单级的。例:THIS.Caption (引用本对象的caption属性) (2)引用也可以是多级的,但要逐级引用。例:THISFORM.command1.Caption(引用本表单的 对象command1的caption属性) (3)控件也可引用

12、包含它的容器。例:THIS.PARENT.Caption(引用包含本对象的直接容器的caption属性)关键字引用的对象THIS当前对象本身THISFORM当前对象所在的表单THISFORMSET 当前对象所在的表单集PARENT当前对象的直接容器容器嵌套层次 引用关键字 formset1form1command1pageframe1page17.3.2 编程设置属性和调用方法程序 1.编程设置对象属性 设置格式:对象名.属性名=设置值 例7.2:设计包含一个命令按钮的表单,单击该命令按钮将使它在屏幕上随机移动。表单的背景色为蓝色且运行时在屏幕上居中。 2.编程调用对象方法程序 调用格式:格式

13、:对象名.方法程序名(参数1,参数2,) (1)Cls方法 格式:OBJECT.Cls 功能:清除表单上的图形或文本。 (2)Print方法 格式:OBJECT.Print(cText) 功能:在表单上打印字符串。 例7.3在表单上显示九九乘法表,单击表单则清除该乘法表。(作业)(1)新建表单FORM1(2)往FORM1中添加两个命令按钮控件,并修改其CAPTION属性。(3)表单的LOAD事件编码:public a(10) &定义全局变量数组A(10)图7.8例7.3表单(4)“产生随机数”按钮的CLICK事件编码:temp=thisform.currentx=2thisform.c

14、urrenty=10thisform.print(10个随机数是:)for i=1 to 10 a(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(排序如下:)for i=1 to 9 &利用双重循环

15、,实现数组元素排序for j=i+1 to 10if a(i)a(j) p=a(i) a(i)=a(j) a(j)=pendifendforendforfor i=1 to 10temp=temp+str(a(i),3)+,endforthisform.currentx=4thisform.currenty=70thisform.print(temp)(6)表单的CLICK事件编码:thisform.cls &清空表单上显示的数据(7)表单的UNLOAD事件编码:release a 7.3.3 VFP的事件序列 (了解) 1.事件序列事件序列 VFP是事件驱动的工作方式,VFP的事件或

16、者由用户动作触发或者由系统触发,用户的一个动作可能触发一个或多个事件。这些事件的发生有一定的次序。 例:表单界面如图7.7,有一个命令钮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.GotFo

17、cus()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()

18、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 用户自定义属性和方法程序(了解) 1.用户定义属性 针对表单和表单集对象 , VFP允许用户向它们添加自定义的属性,用户自定义属性类

温馨提示

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

评论

0/150

提交评论