第8章-面向对象-VFP课件.ppt

上传人:知****量 文档编号:91531033 上传时间:2023-05-27 格式:PPT 页数:37 大小:2.48MB
返回 下载 相关 举报
第8章-面向对象-VFP课件.ppt_第1页
第1页 / 共37页
第8章-面向对象-VFP课件.ppt_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《第8章-面向对象-VFP课件.ppt》由会员分享,可在线阅读,更多相关《第8章-面向对象-VFP课件.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、学习要点学习要点1、面向对象程序设计的基本概念及设计方法;2、可视化程序设计的基本方法、类。第第8章章 面向对象程序设计面向对象程序设计5/26/20231Visual FoxPro 6.0程序设计 面向对象的概念面向对象的概念1。对象(Object)客观世界里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念。从编程的角度来看,对象是一种将数据和操作过程结合在一起的数据结构,或者是一种具有属性(数据)和方法(过程和函数)的集合体。事实上程序中的对象就是对客观世界中对象的一种抽象描述(1)对象属性:属性用来表示对象的状态。(2)对象方法:对象方法是描述对象行为的过程。5/26/

2、20232Visual FoxPro 6.0程序设计2类 类是对一类相似对象的性质描述,这些对象具有相同种类的属性以及方法 3子类与继承 在面向对象的方法里,继承是指在基于现有的类创建新类时,新类继承了现有类里的方法和属性。此外,可以为新类添加新的方法和属性。我们把新类称为现有类的子类,而把现有类称为新类的父类。一个子类的成员一般包括:(1)从其父类继承的属性和方法。(2)由子类自己定义的属性和方法。5/26/20233Visual FoxPro 6.0程序设计类的概念类的概念 例如,自然界中所有的动物都可以看成是生物的子类,因为它不仅继承了生物的所有特征,而且扩展了自己的新特征:生物类具有共

3、同的特征:有生命,生命有长短;能够进行新陈代谢;能够繁衍后代等。而动物类除了具有上述共同的特征外,它还具有:能够活动;不能进行光合作用等。5/26/20234Visual FoxPro 6.0程序设计Visual Foxpro基类 列表类名含义类名含义ActiveDoc活动文档Label标签CheckBox复选框Line线条Column(表格)列Listbox列表框ComboBox组合框OlecontrolOLE容器控件CommandButton命令按钮OleboundcontrolOLE绑定控件CommandGroup命令按钮组OptionButton选项按钮Container容器Optio

4、ngroup选项按钮组Contorl控件Page页Custom定制PageFrame页框EditBox编辑框ProjectHook项目挂钩Form表单Separator分隔符FormSet表单集Shape图形Grid 表格Spinner微调控件Header(列)标头TextBox文本框HyperLink超级链接Timer定时器Image图象ToolBar工具栏5/26/20236Visual FoxPro 6.0程序设计所有的基类都有如表5-2所示的最小事件集:表5-2、VFP基类的最小事件集所有的VFP基类都有如表5-3所示的最小属性集:表5-3、VFP基类的最小属性集 注意:注意:如果对象

5、从基类中派生而得,那么,基类对象的ParentClass属性值为空。5/26/20237Visual FoxPro 6.0程序设计对象属性访问以及对象方法调用的基本格式如下:.(参数列表)【例7-1】基于Visual FoxPro的FORM类生成一个对象,然后访问该对象的一些属性和方法。Oform=CREATEOBJECT(Form)&生成一个空白表单Oform.show&显示表单Oform.caption=”演示”&修改表单的标题?”这是一个生成对象的演示程序”&在表单上输出字符串Oform.release5/26/20238Visual FoxPro 6.0程序设计表格、选项按钮组、页框、

6、页面、工具栏等。在这些容器中都可以包含多种对象。(2)控件类:控件类是指单一的文本框、标签、命令框、列表框等。多个控件对象可以当作一个整体类处理,但是组成控件对象的组件不能单独被修改和操作。在VFP6中,表以及控件是应用程序中的对象。在结构化程序设计中,数据和操作是分离的。但是为了更好地模拟对象特征,在面向对象的程序设计中,数据和操作是统一的整体。由于对象中包括了数据和对数据的操作,所以具有很强的独立性,容易理解并维护。对象具有以下一些特点:每个对象都具有对象标识符,用标识符来表示对象的唯一性。对象必须属于一个对象类。8.3 对象和方法对象和方法返 回5/26/202310Visual Fox

7、Pro 6.0程序设计在VFP中,表单、表单集以及所有控件都可以看成是应用程序中的对象,可以对它们设置属性、事件和方法。对象的属性值是由对象所基于的类决定的。对象值的设置可以在设计时通过属性窗口设置,也可以直接编进程序代码在运行的过程中设置。例如,一个命令按钮控件的常用属性设置如表5-4所示。表5-4、为命令按钮对象设置属性 在Windows的操作中,用户通常用下面的动作来运行应用程序:单击鼠标、双击鼠标、拖动鼠标等,这些可以为系统所接受的动5/26/202311Visual FoxPro 6.0程序设计表7-2属性或关键字引用Parent当前对象的直接容器对象This当前对象ThisForm

8、当前对象所在的表单ThisFormSet当前对象所在的表单集5/26/202313Visual FoxPro 6.0程序设计表5-5、VFP的常用事件及其使用说明 5/26/202315Visual FoxPro 6.0程序设计表5-6、VFP中常用和方法程序 其中,有的方法程序的使用需要在后面添加参数,例如Circle:Object.Circle(nRadius,nXCoord,nYCoord,nAspect)其中,参数nRadius用于指定圆的半径;nXCoord和nYCoord 用以设定圆心的坐标值,如果要画椭圆,需要参数nAspect指定椭圆的长轴与短轴比。有的方法程序不需要添加任何参

9、数而直接调用,例如:Release方法用于退出表单或者表单集,其使用方法为:Object.Release对于其它需要添加参数的方法程序的使用,可以查阅VFP的帮助文件。返 回5/26/202316Visual FoxPro 6.0程序设计8.5 类的操作方法类的操作方法 1、创建新类 在类设计器中,可以设计并修改类。例如希望创建工具条:可按下述方法进行:第1步、执行【文件】|【新建】命令,在打开的对话框中选择“类”,并单击【新建文件】按钮;或在项目管理器中选择“类”选项卡,然后单击【新建】。第2步、在弹出的对话框中,输入新建类的名称和基类如图5-17所示。5/26/202318Visual F

10、oxPro 6.0程序设计 在“类名”框中输入NewToolBar,在“派生于”框中选择ToolBar,然后在“存储于”框中输入“c:gxglxtlibsgxglxt_app.vcx”。第3步、单击【确定】按钮进入“类设计器”窗口。在“表单控件”工具栏上单击“组合框”按钮和“命令锁定”按钮。5/26/202319Visual FoxPro 6.0程序设计 再在“类设计器”中的自定义工具栏上单击,添加组合框控件,按顺序单击三次,添加三个组合框控件。再在“表单控件”工具栏上单击“命令按钮”按钮。5/26/202320Visual FoxPro 6.0程序设计 再在“类设计器”中的自定义工具栏上单击

11、,添加组合命令按钮控件,按顺序单击三次,添加三个命令按钮控件。再在“表单控件”工具栏上单击“分隔符”按钮。再在“类设计器”中的自定义工具栏上单击,添加分隔符控件,按顺序单击五次,添加五个分隔符控件。5/26/202321Visual FoxPro 6.0程序设计 第4步、对NewToolBar类进行属性设置。对象属性设置在图5-19所示的属性设置对话框进行。图5-19 对象属性设置对话框 单击图5-19中的对象选择下拉列表框,选择“NewToolBar”对象,然后选择属性名“Caption”(单击),在属性输入文本框中输入显示时该对象的名称。现在输入“格式”。5/26/202322Visual

12、 FoxPro 6.0程序设计达式生成器对话框中的表达式文本框中输入将要用到的几种文本格式,如正文、标题1、标题2、表格等,每种格式中间用逗号分隔;再选择Value属性,设置其值为“正文”;再选择ControlSource属性,将值设置为Value。其它两个列表框也可采用同样方式进行属性设置。第5步、为添加的控件添加事件及方法程序,并设计表单的初始化代码。在类设计器中用双击控件,也可以进入该控件的代码编辑窗口。1、在属性窗口中选择“方法程序”选项卡,在“对象选择列表”框中选择Combo2,然后再在“属性名”窗口中双击Click Event。方法程序编辑窗口5/26/202324Visual F

13、oxPro 6.0程序设计在方法程序编辑窗口中输入下列代码:THISFORMSET.ActiveForm.ActiveControl.FontName=THIS.VALUE2、设置Combo3的Click Event代码:THISFORMSET.ActiveForm.ActiveControl.FontSize=;VAL(ALLTRIM(THIS.VALUE)3、设置Command1的Click Event代码:THISFORMSET.ActiveForm.ActiveControl.FontBold=;!THISFORMSET.ActiveForm.ActiveControl.FontBol

14、dTHIS.FontBold=THISFORMSET.ActiveForm.ActiveControl.FontBold 4、设置Command2的Click Event代码:THISFORMSET.ActiveForm.ActiveControl.FontItalic=;!THISFORMSET.ActiveForm.ActiveControl.FontItalicTHIS.FontItalic=THISFORMSET.ActiveForm.ActiveControl.FontItalic 5、设置Command3的Click Event代码:THISFORMSET.ActiveForm.A

15、ctiveControl.FontUnderline=;!THISFORMSET.ActiveForm.ActiveControl.FontUnderlineTHIS.FontUnderline=THISFORMSET.ActiveForm.ActiveControl.FontUnderline 6、Combo1的Click Event代码没写,因为在VFP中没有排版格式。5/26/202325Visual FoxPro 6.0程序设计2、使用类浏览器 当建立新类后,如果希望查看该类的结果并对其进行修改,可以在类浏览器中打开该类。使用【工具】|【类浏览器】,弹出类浏览器对话框。单击“打开”按钮

16、并选择创建的新类名称,打开该类。“查看类代码”按钮“新类”按钮“重命名”按钮“重定义”按钮5/26/202326Visual FoxPro 6.0程序设计面向对象应用程序示例面向对象应用程序示例 设计一组记录定位按钮。使用定位按钮组来允许用户在表中移动记录指针,其中典型的便是在表中上移或下移一条记录,或者移向表的首记录或尾记录。因为所有的应用程序中用到的定位按钮组都有一些共同的特点和动作,所以创建一个定位按钮类是一个好方法。在此之后,便可以很容易地从这些共同的外观和功能中派生出所需要的命令按钮组。在本实例中,首先进行构建定位按钮类的父类(NAVBUTTON类),再创建子类定义四种定位按钮的特定

17、功能和外观。这四个按钮为:NVATOP、NAVPRIOR、NAVNEXT和NAVBOTTOM。最后,创建VCR容器类,每一种按钮都被加入到容器类中。如果该容器可以加到表单或工具栏中,就可以用来向表单提供表中记录的定位功能。第1步、构建定位按钮父类。若要创建父类NAVBUTTON,要5/26/202328Visual FoxPro 6.0程序设计 将如下六个类定义(NAV_BUTTON、NAVTOP、NAVPRIOR、NAVTEXT、NAVBOTTOM和VCR)保存到一个程序文件中。*通用定位按钮父类的定义DEFINE CLASS NAVBUTTON AS COMMANDBUTTON&定义定位按

18、钮的父类HEIGHT=25&给类设置大小属性WIDTH=75 TABLEALIAS=”&使用TableAlias自定义属性来保存需要进行定位操作的表别名。&若设置了TableAlias,父类过程在子类定位代码执行以前选择有该别名的表。&否则,将假定用户需要对当前工作区中的表进行定位PROCEDURE CLICKIF.NOT.EMPTY(THIS.TABLEALIAS)SELECT(THIS.TABLEALIAS)ENDIFENDPROCPROCEDURE REFRESHFORM_SCREEN.ACTIVEFORM.REFRESH&使用_SCREEN.ActiveForm.Refresh代替EN

19、DPROC&Thisform.Refresh。使得该类即可以加入到表单ENDDEFINE&也可以加入到工具栏,并具有同样的功能。5/26/202329Visual FoxPro 6.0程序设计*NEXT定位按钮类的定义DEFINE CLASS NAVNEXT AS NAVBUTTON&定义Next定位按钮类CAPTION=”下一条”&设置Caption属性PROCEDURE CLICK&定义Click事件代码DODEFAULT()&执行父类的Click事件代码SKIP 1&记录指针下移一条记录IF EOF()&判断指针是否已从表尾溢出GO BOTTOM&若是,则定位到最后一条记录ENDIFTH

20、IS.REFRESHFORM&刷新表单或工具栏ENDPROC&Click事件代码定义结束ENDDEFINE&Next类定义结束*PRIOR定位按钮类的定义DEFINE CLASS NAVPRIOR AS NAVBUTTONCAPTION=”前一条”PROCEDURE CLICKDODEFAULT()SKIP 1IF BOF()GO TOPENDIF5/26/202331Visual FoxPro 6.0程序设计THIS.REFRESHFORMENDPROCENDDEFINE*BOTTOM定位按钮类的定义DEFINE CLASS NAVBOTTOM AS NAVBUTTONCAPTION=”最后

21、一条”PROCEDURE CLICKDODEFAULT()GO BOTTOMTHIS.REFRESHFORMENDPROCENDDEFINE 第3步、表定位控件类的定义。下面的类定义了四个定位按钮,使它们可以作为一个整体加入到表单中。该类也包含了设置按钮TableAlias属性的方法程序。*表定位控件类的定义DEFINE CLASS VCR AS CONTAINER&类定义开始,从容器控件类派生HEIGHT=25&定义按钮组中按钮的高WIDTH=200&定义按钮组中按钮的宽5/26/202332Visual FoxPro 6.0程序设计LEFT=3&定义按钮组在容器中的左边距TOP=3&定义按

22、钮组在容器中的右边距ADD OBJECT CMDTOP AS NAVTOP WITH LEFT=0&将CmdTop定位按钮加入按钮组ADD OBJECT CMDPRIOR AS NAVPRIOR WITH LEFT=50ADD OBJECT CMDNEXT AS NAVNEXT WITH LEFT=100ADD OBJECT CMDBOTTOM AS NAVBOTTOM WITH LEFT=150PROCEDURE SETTABLE(CTABLEALIAS)&此方法程序用于设置按钮的TableAlias属性,TableAlias IF TYPE(“CTABLEALIAS”)=”C”THIS.C

23、MDTOP.TABLEALIAS=CTABLEALIAS&属性在父类NavButton中定义THIS.CMDPRIOR.TABLEALIAS=CTABLEALIASTHIS.CMDNEXT.TABLEALIAS=CTABLEALIASTHIS.CMDBOTTOM.TABLEALIAS=CTABLEALIASENDIFENDPROCENDDEFINE 在定义类之后,就可以设计其子类或将此类加入到表单中。第4步、定位按钮子类的创建。用户可以在VCR的基础上创建子5/26/202333Visual FoxPro 6.0程序设计类,这些子类可以拥有像“搜索”、“编辑”、“保存”、“退出”这样的附加按钮

24、。如图5-11所示,VCR包含了一个“退出”按钮:图5-11 含有“退出”按钮的一组表定位按钮*表定位控件子类的定义DEFINE CLASS MYVCR AS VCR&在Vcr的基础上定义一个新类。ADD OBJECT CMDQUIT AS COMMANDBUTTON WITH;&加入一个命令按钮。CAPTION=”退出”,;&按钮名为“退出”HEIGHT=25,;&按钮高度定义WIDTH=50&按钮宽度定义WIDTH=THIS.WIDTH+THIS.CMDQUIT.WIDTHCMDQUIT.LEFT=THIS.WIDTH-THIS.CMDQUIT.WIDTH&按钮左边距定义PROCEDURE

25、 CMDQUIT.CLICK&当单击事件发生时,将释放表单。RELEASE THISFORMENDPROC&Click事件代码定义结束。ENDDEFINE&类定义结束。第5步、将VCR类加到容器中。将VCR定义为一个控件之后,就可以将其加入到一个容器的定义中。5/26/202334Visual FoxPro 6.0程序设计DEFINE CLASS NAVFORM AS FORMADD OBJECT OVCR AS VCRENDDEFINE第6步、运行含VCR的表单。本示例通过一个项目“定位按钮”如图5-12来运行含MYVCR类的表单。图5-12 执行含MYVCR类表单的项目 下面的NAVCLA

26、SS.PRG中定义了运行含有附加定位按钮的表单5/26/202335Visual FoxPro 6.0程序设计所需要的所有类定义代码,如图5-13所示:图5-13 定位按钮类定义程序 在项目的主程序文件MYMAIN.PRG中设定运行含定位按钮类表单的程序代码:SET PROCEDURE TO NAVCLASS ADDITIVEMYTEST=CREATEOBJECT(NAVFORM)5/26/202336Visual FoxPro 6.0程序设计MYTEST.SHOWMYTEST.OVER.SETTABLE(STUDENT)READ EVENT第7步、通过运行NAVCLASS.PRG程序,可以发

27、现存在的问题,针对出现的问题,对类定义进行修改和补充。如果需要修改和补充,可以利用类的继承性这一特点,通过父类对子类进行修改。所有对父类进行的修改都将反映到其全部的子类中。例如,可以通过对在NAVNEXT.CLICK中修改IF EOF()语句,在点击事件发生时给出一个提示信息“已达到表的尾记录”,修改如下:IF EOF()GO BOTTOM=MESSAGEBOX(已达到表的尾记录!,64,Click事件)ENDIF 如果在NAVNEXT中做如上修改,那么,VCR和MYVCR的相应按钮将作出改变。以上代码和步骤是建立一个命令按钮组的过程示例,这里涉及到了VFP6的类定义和对象的属性设置等多方面的问题,这些问题是在面向对象的程序设计中所必需要解决的。返 回5/26/202337Visual FoxPro 6.0程序设计

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁