第五章对象模型和事件模型_第1页
第五章对象模型和事件模型_第2页
第五章对象模型和事件模型_第3页
第五章对象模型和事件模型_第4页
第五章对象模型和事件模型_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-5-11面向对象程序设计面向对象程序设计上一页下一页退 出2 22022-5-12022-5-1 本本 章章 要要 点点n新概念的引入新概念的引入n类类n对象的属性对象的属性n事件事件n方法方法上一页下一页退 出3 32022-5-12022-5-1结构化程序设计结构化程序设计n本质:功能设计本质:功能设计n方法:自顶向下、功能分解,从外部功能上模方法:自顶向下、功能分解,从外部功能上模拟客观世界拟客观世界n开发过程:从开发过程:从“做什么做什么”到到“如何做如何做”n例:演示!例:演示! 求求1100之和。(之和。( “做什么做什么”) S=0 for I=1 to 100 s=s

2、+I endfor ?s(“如何做如何做”)n优点:系统结构性强、便于设计和理解优点:系统结构性强、便于设计和理解n缺点:维护困难缺点:维护困难上一页下一页退 出4 42022-5-12022-5-1结构化程序设计结构化程序设计SPSP到到面向对象程序设计面向对象程序设计OOP上一页下一页退 出5 52022-5-12022-5-1 1.面向对象的程序设计方法面向对象的程序设计方法n方法:基于问题对象的方法:基于问题对象的自底向上自底向上的功能综合的功能综合,从内,从内部结构上模拟客观世界部结构上模拟客观世界n开发过程:从开发过程:从“用什么做用什么做”到到“要做什么要做什么” 表单、对象(表

3、单、对象(“用什么做用什么做”) 事件过程(事件过程( “要做什么要做什么”)n优点优点以对象为中心的问题求解方法简化程序设计,更接以对象为中心的问题求解方法简化程序设计,更接近现实世界,可降低开发和维护的费用近现实世界,可降低开发和维护的费用提高程序代码的可重用性提高程序代码的可重用性可以和各种模型自然的融合可以和各种模型自然的融合设计出程序的基本单设计出程序的基本单位:类和对象位:类和对象利用类的继承性设计利用类的继承性设计系统的功能系统的功能5.3 面向对象的程序设计概述在在VFP中表单是中表单是“面向对象面向对象”可可视化设计的主要体现之所在视化设计的主要体现之所在上一页下一页退 出6

4、 62022-5-12022-5-15.3.1 类和对象类和对象n 类类:所谓类所谓类(Class),就是一组具有相同结构、性质、,就是一组具有相同结构、性质、共同操作特点及遵守相同规则的对象的集合。共同操作特点及遵守相同规则的对象的集合。 它是对某种具有共同属性及其行为特征的它是对某种具有共同属性及其行为特征的对象群体对象群体的抽象描的抽象描述。述。n 对象:对象:是类的一个实例(包含具体数据、过程定义)是类的一个实例(包含具体数据、过程定义)n 类是静态概念,对象是动态概念类是静态概念,对象是动态概念 “类类”定义了定义了某类对象特征以及对象外观和行为某类对象特征以及对象外观和行为的的模板

5、模板,它刻划了一组具有共同特性的对象群体,它刻划了一组具有共同特性的对象群体 “对象对象”则是基于某种类所创建的一个实例则是基于某种类所创建的一个实例 在在OOPOOP中,中,类就像是一个模板,对象都是基于这个模板生成类就像是一个模板,对象都是基于这个模板生成的:类定义了对象所具有的属性、事件和方法,从而决定了该的:类定义了对象所具有的属性、事件和方法,从而决定了该类对象的属性和它的行为。类对象的属性和它的行为。Visual FoxProVisual FoxPro系统为用户提供系统为用户提供2929个基类个基类上一页下一页退 出7 72022-5-12022-5-11. 类类基类基类:VFP系

6、统提供的内部定义的类系统提供的内部定义的类,可用可用于用户定义子类的基础于用户定义子类的基础子类子类:是以其它类是以其它类(已有的已有的)定义为起点定义为起点,为为某一种对象所建立的新类。子类将继承任某一种对象所建立的新类。子类将继承任何对父类所做的修改何对父类所做的修改用户自定义类用户自定义类:与基类相似,由用户自己定与基类相似,由用户自己定义,也可用于派生子类,义,也可用于派生子类,但无可视化表示但无可视化表示形式形式上一页下一页退 出8 82022-5-12022-5-1 我们大家都熟悉被称为电视机的这一类我们大家都熟悉被称为电视机的这一类对象,它们有许多相同的属性:荧光屏、电源开对象,

7、它们有许多相同的属性:荧光屏、电源开关、音量调节和频道选择。如果进一步考虑到,关、音量调节和频道选择。如果进一步考虑到,尽管都是电视机,但是一些是黑白的,一些是彩尽管都是电视机,但是一些是黑白的,一些是彩色的,一些还可以遥控,那么你已经了解到了类色的,一些还可以遥控,那么你已经了解到了类和继承。电视机发展到今天,其功能在不断地完和继承。电视机发展到今天,其功能在不断地完善,但所有的基本特征仍然存在,而且它们仍然善,但所有的基本特征仍然存在,而且它们仍然具有相同的工作方式。换句话说,新的型号继承具有相同的工作方式。换句话说,新的型号继承了基本型号的所有特征,而且增加了一些它自己了基本型号的所有特

8、征,而且增加了一些它自己的特征。基本型号可以称为基类,而新的型号就的特征。基本型号可以称为基类,而新的型号就称为子类。称为子类。 (通过类可以简化应用程序设计)(通过类可以简化应用程序设计)上一页下一页退 出9 92022-5-12022-5-1n类的特点类的特点n继承性(继承性(inheritance)子类沿用父类特征的能力子类沿用父类特征的能力如果父类特征发生改变,则子类将继承这些新特征如果父类特征发生改变,则子类将继承这些新特征n多态性(多态性(polymorphism)一些关联的类包含同名的方法程序,但方法程序的内容可一些关联的类包含同名的方法程序,但方法程序的内容可以不同以不同相同的

9、操作作用于多种类型的对象上获得不同的结果,增相同的操作作用于多种类型的对象上获得不同的结果,增强系统的灵活性、维护性和扩充性强系统的灵活性、维护性和扩充性n封装性封装性 (encapsulation)说明了包含和隐藏对象信息的能力说明了包含和隐藏对象信息的能力高内聚,低耦合高内聚,低耦合n抽象性(抽象性(abstraction)提取一个类或对象与众不同的特征,而不对该类或对象的提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理所有信息进行处理上一页下一页退 出10102022-5-12022-5-1 VFP VFP提供了两种类型的提供了两种类型的2929个基类。我个基类。我们今

10、后将使用其中的一部分。其次,我们可以们今后将使用其中的一部分。其次,我们可以建立这些基类的子类。当子类被建立的时候,建立这些基类的子类。当子类被建立的时候,它们继承了父类的所有属性、事件和方法。然它们继承了父类的所有属性、事件和方法。然后,我们可以在子类增加或改变属性和方法,后,我们可以在子类增加或改变属性和方法,以使它们满足特定的需要。以使它们满足特定的需要。 在在VFP中,类的使用是非常灵活的,你完中,类的使用是非常灵活的,你完全可以不设计新的类,仅使用全可以不设计新的类,仅使用VFP提供的基类提供的基类也能满足要求。也能满足要求。上一页下一页退 出11112022-5-12022-5-1

11、2.对象(对象(Object) 对象(对象(ObjectObject)是类的实例)是类的实例。 每个对象都具有描述它特征的属性,以及附属于它每个对象都具有描述它特征的属性,以及附属于它的行为。对象把事物的属性和行为封装在一起,是一的行为。对象把事物的属性和行为封装在一起,是一个动态的概念。对象是面向对象编程的基本元素,是个动态的概念。对象是面向对象编程的基本元素,是“类类”的具体实例。的具体实例。n每个对象都具有属性及与之相关的事件和方法每个对象都具有属性及与之相关的事件和方法 在在VFP中,包含在应用程序中的表单及各种控件中,包含在应用程序中的表单及各种控件都是对象。对象是包含数据和代码的实

12、体。在程序设都是对象。对象是包含数据和代码的实体。在程序设计中,用属性、事件和方法来说明对象,属性就是对计中,用属性、事件和方法来说明对象,属性就是对象的数据内容,事件和方法则是对象中包含的代码。象的数据内容,事件和方法则是对象中包含的代码。nVFPVFP对象大多数是可见的,也有一些特殊的对象是不对象大多数是可见的,也有一些特殊的对象是不可见的。可见的。上一页下一页退 出12122022-5-12022-5-1 在在Visual FoxProVisual FoxPro应用程序中,系统窗口和用户应用程序中,系统窗口和用户自定义的窗口都可以被看成是一个具体对象。具有自定义的窗口都可以被看成是一个具

13、体对象。具有以下属性和行为特征:以下属性和行为特征: . .窗口的标题及窗口的大小;窗口的标题及窗口的大小; . .窗口的前景和背景颜色;窗口的前景和背景颜色; . .窗口中所显示信息的内容及格式;窗口中所显示信息的内容及格式; . .窗口中提供了哪些控件;窗口中提供了哪些控件; . .窗口中每个控件在窗口的位置;窗口中每个控件在窗口的位置; . .窗口中每个控件的大小;窗口中每个控件的大小; . .窗口中的控件应如何操作。窗口中的控件应如何操作。 另外,在另外,在Visual FoxProVisual FoxPro应用程序中,命令按应用程序中,命令按钮也可以看成是对象,具有以下属性和行为特征

14、:钮也可以看成是对象,具有以下属性和行为特征: . .命令按钮在窗口的位置;命令按钮在窗口的位置; . .命令按钮的标题及命令按钮的大小;命令按钮的标题及命令按钮的大小; . .按动命令按钮进行什么操作。按动命令按钮进行什么操作。上一页下一页退 出13132022-5-12022-5-13.属性属性(Property) 用于定义对象的特征或某一方面的行为用于定义对象的特征或某一方面的行为 每个对象都具有属性,属性表明了对象的一些基每个对象都具有属性,属性表明了对象的一些基本特征,如大小、颜色、所处的位置等本特征,如大小、颜色、所处的位置等 属性构成属性构成: 一方面由对象所基于的类决定一方面由

15、对象所基于的类决定; 另一方面也可为其定义新的属性另一方面也可为其定义新的属性 对象的每一种属性,都是与其它对象加以区别的对象的每一种属性,都是与其它对象加以区别的特性,都具有一定的含义,并可赋予一定的值。特性,都具有一定的含义,并可赋予一定的值。 属性值属性值对象各属性的具体内容指定对象各属性的具体内容指定 可设置内容:由用户(设计者)设置可设置内容:由用户(设计者)设置 不可设置内容:不可设置内容:只读只读上一页下一页退 出14142022-5-12022-5-1 属性是属于某一个类的,不能独立属性是属于某一个类的,不能独立于类而存在。派生出的新类将继承基类于类而存在。派生出的新类将继承基

16、类和父类的全部属性。在和父类的全部属性。在Visual FoxProVisual FoxPro系系统中,各种对象拥有统中,各种对象拥有7070多个属性。对象多个属性。对象的属性值可以在设计对象时定义,也可的属性值可以在设计对象时定义,也可以在对象运行时进行设置以在对象运行时进行设置VFP属性均有名称标识,通过名称使属性均有名称标识,通过名称使用用在在VFP中,用户可以根据需要进行属中,用户可以根据需要进行属性扩充。性扩充。(即用户可自己创建新属性)(即用户可自己创建新属性)上一页下一页退 出15152022-5-12022-5-1命令按钮属性说明命令按钮属性说明Caption 显示在按钮上的标

17、题显示在按钮上的标题Name 按钮对象的名称按钮对象的名称FontName 按钮的字体名按钮的字体名ForeColor 前景颜色前景颜色n对象的有些属性值可修改对象的有些属性值可修改F设计阶段设计阶段F运行阶段(运行阶段(show)n对象的有些属性值不可修改对象的有些属性值不可修改n分类分类只读(不可以修改:只读(不可以修改:baseclass)单值(直接输入:单值(直接输入:caption)二值(下拉列表中选择,也可以双击)二值(下拉列表中选择,也可以双击)多个值(下拉列表中选择多个值(下拉列表中选择:borderstyle)上一页下一页退 出16162022-5-12022-5-14.事件

18、事件(Event) 是由对象识别的一个动作是由对象识别的一个动作 事件事件(Event) (Event) 是每个对象可用以识别和响是每个对象可用以识别和响应的某些行为和动作。应的某些行为和动作。 可编写相应的程序代码对事件动作进行响应可编写相应的程序代码对事件动作进行响应 事件是一种预先定义好的特定动作,被用户行为事件是一种预先定义好的特定动作,被用户行为或系统事件激活,每个对象都可以对相关事件的动或系统事件激活,每个对象都可以对相关事件的动作进行识别和响应。在多数情况下,事件是由用户作进行识别和响应。在多数情况下,事件是由用户的交互行为产生的。的交互行为产生的。 不同对象能够识别的事件内容是

19、不一致的不同对象能够识别的事件内容是不一致的 在在VFP中,中,事件集合是固定的(由系统指定),事件集合是固定的(由系统指定),用户不能进行扩充。用户不能进行扩充。(即用户不能自己创建新事件)(即用户不能自己创建新事件) 上一页下一页退 出17172022-5-12022-5-1 在在Visual FoxProVisual FoxPro系统中,对象可以响应系统中,对象可以响应5050多多种事件。多数情况下,事件是通过用户的操作行种事件。多数情况下,事件是通过用户的操作行为引发的,当事件发生时,将执行包含在事件过为引发的,当事件发生时,将执行包含在事件过程中的全部代码。程中的全部代码。n可编写相

20、应的代码,对动作进行响应可编写相应的代码,对动作进行响应n事件可由用户的动作、程序代码或系统产生事件可由用户的动作、程序代码或系统产生nVFP的对象事件集合是固定的,用户不能创的对象事件集合是固定的,用户不能创 建新的建新的事件事件nVFP事件均有名称标识事件均有名称标识n例:例:click上一页下一页退 出18182022-5-12022-5-15.方法方法(Method) 是对象能够执行的一个操作流程是对象能够执行的一个操作流程n方法方法是与对象相关联的过程,也称是与对象相关联的过程,也称方法程序方法程序n方法程序方法程序有系统提供的,也可由用户根据需要自有系统提供的,也可由用户根据需要自

21、 己创建己创建nVFP方法也方法也均有名称标识,通过名称使用均有名称标识,通过名称使用n例:例:releasen方法程序也方法程序也往往与对象事件相关联往往与对象事件相关联 方法实际上就是对象的内部过程(函数),每方法实际上就是对象的内部过程(函数),每个类型的对象都有它自己的方法集。例如在命令按个类型的对象都有它自己的方法集。例如在命令按钮对象中,调用钮对象中,调用Move方法可以移动按钮的位置。方法可以移动按钮的位置。与事件不同的是,方法可以由用户进行扩展。与事件不同的是,方法可以由用户进行扩展。 上一页下一页退 出19192022-5-12022-5-1 5.3.2 5.3.2 基基 类

22、类n基类:基类:VFP系统提供的内部定义的类系统提供的内部定义的类n子类:子类:引用引用VFP基类或其他子类建立的新类基类或其他子类建立的新类n用户自定义类:用户自定义类:与基类相似,由用户自定义,与基类相似,由用户自定义,但但无可视的表示形式无可视的表示形式VFP基类基类子类子类子类子类子类上一页下一页退 出20202022-5-12022-5-11 VFP的基类的基类(P151 (P151 表表5-15-1、表、表5-2)5-2)1 1标签标签9 9列表框列表框1717线条线条自定义自定义2 2文本框文本框1010微调框微调框1818形状形状控件控件3 3编辑框编辑框11 11表格表格19

23、19容器容器工具栏工具栏4 4命令按钮命令按钮1212图像图像2020分隔符分隔符* *表单表单5 5命令按钮组命令按钮组 1313计时器计时器选项按钮选项按钮* *表单集表单集6 6选项按钮组选项按钮组 1414页框页框标头标头* *7 7复选框复选框15 OLE15 OLE容器控件容器控件表格列表格列* *8 8组合框组合框16 OLE16 OLE绑定型控件绑定型控件页面页面* *1-20为标准类(控件)(控件箱中带为标准类(控件)(控件箱中带)兰色字:容器类,其余为非容器类(控件类)兰色字:容器类,其余为非容器类(控件类)上一页下一页退 出21212022-5-12022-5-1:基类的

24、最小事件基类的最小事件集集事事 件件说说 明明InitInit当对象创建时激活当对象创建时激活DestroyDestroy 当对象从内存中释放时激活当对象从内存中释放时激活errorerror当类中的事件或方法程序运行当类中的事件或方法程序运行中发生错误时激活中发生错误时激活上一页下一页退 出22222022-5-12022-5-1基类的最小属性基类的最小属性集集属性属性说明说明ClassClass该类属于何种类型该类属于何种类型BaseclassBaseclass该类由何种基类派生而来该类由何种基类派生而来(Form,commandbuttonForm,commandbutton或或cust

25、omcustom等)等)ClasslibraryClasslibrary该类从属于何种类库该类从属于何种类库parentclassparentclass对象所基于的类。若该类直接由对象所基于的类。若该类直接由VFPVFP基类派生而来,则基类派生而来,则ParentclassParentclass属性属性值与值与baseclassbaseclass属性值相同属性值相同上一页下一页退 出23232022-5-12022-5-1n 容器类容器类(Container classes)是能够包容其是能够包容其它类的基类它类的基类n容器类对象可以包含其它对象容器类对象可以包含其它对象n容器类对象可以作为所

26、包含的对象的父对象容器类对象可以作为所包含的对象的父对象n 控件类控件类(Control classes)不能够包容其它不能够包容其它类,但可以放在容器类中的基类类,但可以放在容器类中的基类n控件类对象可以包含在容器中控件类对象可以包含在容器中n不能作为其它对象的父对象不能作为其它对象的父对象n 基于类的不同类型,基于类的不同类型,VFP的对象可分为的对象可分为容容器对象器对象和和控件对象控件对象n容器对象容器对象可以作为它所包容的对象的父对象可以作为它所包容的对象的父对象2 容器类与控件类容器类与控件类上一页下一页退 出24242022-5-12022-5-1容器类容器类容器类容器类能包含的

27、对象能包含的对象容器容器任意控件类任意控件类工具栏工具栏任意控件类、页框、容器任意控件类、页框、容器表单集表单集表单、工具栏表单、工具栏表单表单页框、任意控件类、容器、自定义对象页框、任意控件类、容器、自定义对象表格表格表格列表格列表格列表格列标头以及除表单、表单集、工具栏、计时器和标头以及除表单、表单集、工具栏、计时器和其它列以外的任意对象其它列以外的任意对象页框页框页面页面页面页面任意控件类、容器和自定义对象任意控件类、容器和自定义对象命令按钮组命令按钮组命令按钮命令按钮选项按钮组选项按钮组选项按钮选项按钮上一页下一页退 出25252022-5-12022-5-15.3.3 5.3.3 处

28、理对象处理对象创建对象创建对象: 基类基类: 定义的子类定义的子类: 对象对象 用户子定义类用户子定义类:方式方式: 编程编程 可视化开发工具设计可视化开发工具设计上一页下一页退 出26262022-5-12022-5-1容器类:包含了一个容器类:包含了一个“容器容器”基类基类控件类:包含了一个控件类:包含了一个“控件控件”基类基类 基于它们均可生成基于它们均可生成对象对象 VFP中主要以表单(或表单集)为最高容器层,中主要以表单(或表单集)为最高容器层,其它基类对象可以在其中生成,成为被其它基类对象可以在其中生成,成为被表单(或表表单(或表单集)单集)包容的对象;层层相生,层层包容,最终形包

29、容的对象;层层相生,层层包容,最终形成成表单(或表单集)表单(或表单集)的对象群体。的对象群体。 一个面向对象的程序就是由一组相关的对象群一个面向对象的程序就是由一组相关的对象群体以及它们的属性、事件、方法集合而成的整体。体以及它们的属性、事件、方法集合而成的整体。上一页下一页退 出27272022-5-12022-5-1层次体系示意图层次体系示意图表表单单集集表表单单容容器器控控件件上一页下一页退 出28282022-5-12022-5-1 如何处理对象如何处理对象? 1 引用对象引用对象n分类分类n绝对引用绝对引用n相对引用相对引用n何时要引用对象何时要引用对象n当要设置或取得对象的某个属

30、性的值时当要设置或取得对象的某个属性的值时n当要执行对象的某个方法事件时当要执行对象的某个方法事件时n容器层次体系容器层次体系n容器与容器中的控件是上下层次的关系容器与容器中的控件是上下层次的关系n一个应用程序的一个应用程序的最高层次最高层次是各种活动表单或表单是各种活动表单或表单集,集,最低层次最低层次是一个非容器类控件对象或是一个不是一个非容器类控件对象或是一个不包含任何控件的容器类对象包含任何控件的容器类对象上一页下一页退 出29292022-5-12022-5-1 表单集表单集“表单集表单集1”(该对象的(该对象的Name属性为属性为FormSet1)中包含)中包含2个表单个表单“Fo

31、rm1”和和“Form2”;表单;表单“Form1”中包含中包含2个文本框、个文本框、1个选项按钮组、个选项按钮组、1个页框;页框中包含个页框;页框中包含2个选项卡式页面个选项卡式页面Page1和和Page2;页面;页面“Page1”中包中包含含1个表格个表格“Grid1”;表格中包含;表格中包含2个列控件对象个列控件对象;列控件又包括标头和文本列控件又包括标头和文本框控件框控件。上一页下一页退 出30302022-5-12022-5-1n绝对引用绝对引用n从容器的最高层次引用对象,给出对象的绝对地址从容器的最高层次引用对象,给出对象的绝对地址n例:表单例:表单Form1对象:对象:FormS

32、et1.Form1 表格的第一列中的文本框表格的第一列中的文本框Text1对象:对象: FormSet1.Form1.Pageframe1.page1.column1.Text1注意!引用时按层次关系指明关联对象名称,并用注意!引用时按层次关系指明关联对象名称,并用“.”隔开隔开n相对引用相对引用n在容器层次中相对于某个容器层次的引用在容器层次中相对于某个容器层次的引用n相对引用通常运用于某个具体对象的事件处理代码或方法程相对引用通常运用于某个具体对象的事件处理代码或方法程序代码中,即在某个容器对象的事件处理代码或方法程序中序代码中,即在某个容器对象的事件处理代码或方法程序中对所包容的对象的引

33、用,引用时可以直接使用其对象名对所包容的对象的引用,引用时可以直接使用其对象名n相对引用时,所涉及到的一些关键字(相对引用时,所涉及到的一些关键字(P153表表5-5)n例例:在在文本框文本框Text1中引用表单中引用表单Form1: THISFORM 或或 THIS.PARENT上一页下一页退 出31312022-5-12022-5-1关键字含义ActiveForm当前活动表单ActivePage当前活动表单中的活动页面ActiveControl当前活动表单中具有焦点的控件PARENT该对象的直接容器(父容器)THIS该对象THISFORM包含该对象的表单THISFORMSET包含该对象的表

34、单集相对引用对象时所用的关键字相对引用对象时所用的关键字 上一页下一页退 出32322022-5-12022-5-12 设置对象属性设置对象属性n每个对象都有属性,可以对对象设置属性每个对象都有属性,可以对对象设置属性n属性可以在设计时设置也可在运行时设置,但也有一些属性可以在设计时设置也可在运行时设置,但也有一些属性是只读的。属性是只读的。n设计设计时修改属性在时修改属性在“属性属性”窗口中进行窗口中进行n程序代码程序代码中,用以下语法进行设置中,用以下语法进行设置 引用对象引用对象 . 属性属性 = 值值例:绝对引用例:绝对引用FormSet1.Form1.Text1.Value=DATE

35、()FormSet1.Form1.Text1.ForeColor=RGB(0,0,0) FormSet1.Form1.Text1.BackColor=RGB(192,192,192)FormSet1.Form1.Text1.FontName=“黑体黑体”上一页下一页退 出33332022-5-12022-5-1引用一个对象的多个属性和方法(重要)引用一个对象的多个属性和方法(重要)如如:with formset1.form1.text1 (点不能放在此处(点不能放在此处) .Value=DATE() .ForeColor=RGB(0,0,0) .BackColor=RGB(192,192,19

36、2) .FontName=“黑体”endwith如如:With Thisform.txtXh.backcolor=rgb(128,0,0) .txtXm.backcolor=rgb(0,128,0)Endwith 上一页下一页退 出34342022-5-12022-5-13 调用对象的方法程序调用对象的方法程序n方法程序方法程序是对象能够执行的一个是对象能够执行的一个操作操作,是和对,是和对象相联系的象相联系的过程过程n调用语法调用语法引用对象引用对象.方法程序方法程序1.释放表单:释放表单:Thisform.release2.显示表单显示表单Form1,并将焦点设置在文本框,并将焦点设置在文

37、本框Text2上:上: FormSet1.Form1.show FormSet1.Form1.Text2.SetFocus 3.有返回值的方法程序以圆括号结尾有返回值的方法程序以圆括号结尾,如如 ApplicationObject.Quit() 4.如有参数传递给方法程序如有参数传递给方法程序,该参数应放在括号中该参数应放在括号中.n也可以为对象的也可以为对象的方法方法(新建新建)和事件和事件自行编写自行编写方法程序方法程序代码,代码, 还可在自建的子类中扩展方法集还可在自建的子类中扩展方法集(以后讲)(以后讲)上一页下一页退 出35352022-5-12022-5-1 方法实际上就是对象的内

38、部过程或函数,每个方法实际上就是对象的内部过程或函数,每个类型的对象都有它自己的方法集。例如在命令按钮类型的对象都有它自己的方法集。例如在命令按钮对象中,调用对象中,调用Move方法可以移动按钮的位置。与事方法可以移动按钮的位置。与事件不同的是,方法可以由用户进行扩展。件不同的是,方法可以由用户进行扩展。 表单对象的常用方法表单对象的常用方法 :Refresh-重画表单和控制,刷新表单中的所有值重画表单和控制,刷新表单中的所有值Show-显示表单显示表单Hide-隐藏表单隐藏表单Release-从内存中释放表单从内存中释放表单上一页下一页退 出36362022-5-12022-5-14 对象对

39、事件的响应对象对事件的响应n事件是对象识别的一个动作,用户可以编写相应的事件是对象识别的一个动作,用户可以编写相应的代码对此动作进行响应代码对此动作进行响应(这样这样,当该对象的某个事件当该对象的某个事件发生时发生时,该事件的对应的程序代码将被执行该事件的对应的程序代码将被执行)n若对象的某个事件没有相关的程序代码若对象的某个事件没有相关的程序代码,则该事件则该事件发生时发生时,对象不会发生任何操作对象不会发生任何操作.nVFP对象事件集合是固定的对象事件集合是固定的n用户不能创建新的用户不能创建新的VFP对象事件对象事件.n事件一般是由用户的交互方式触发的,如单击或双事件一般是由用户的交互方

40、式触发的,如单击或双击鼠标,按下键盘上的键,也有些是被系统触发的击鼠标,按下键盘上的键,也有些是被系统触发的.n在某事件没有发生时,用户可以显式地调用与该事在某事件没有发生时,用户可以显式地调用与该事 件相关的过程件相关的过程. 如语句:如语句: this.Pmand1.click 将使事件代码被执行,但该事件并没有发生。将使事件代码被执行,但该事件并没有发生。上一页下一页退 出37372022-5-12022-5-1常用对象事件常用对象事件鼠标事件鼠标事件键盘事件键盘事件表单事件表单事件控件焦点事件控件焦点事件数据环境事件数据环境事件上一页下一页退 出38382022-5-12022-5-1

41、5.3.4 相关事件相关事件n核心事件集(表核心事件集(表5-6) 1 核心事件核心事件 每个对象都有与之相关的事件集合。对于已创建的多个每个对象都有与之相关的事件集合。对于已创建的多个对象,用户根据需要可以为某个或某些事件配置相应的事对象,用户根据需要可以为某个或某些事件配置相应的事件处理代码,使得应用程序在运行过程中根据所发生的事件处理代码,使得应用程序在运行过程中根据所发生的事件作出相应的处理件作出相应的处理 基类的事件集合是固定的,不能进行扩充。每个类都基类的事件集合是固定的,不能进行扩充。每个类都可识别固定的默认事件集合,它的最小事件集包括可识别固定的默认事件集合,它的最小事件集包括

42、Init、Destroy和和Error事件事件. 教材表教材表5-6列出了列出了Visual FoxPro中的核心事件集,这些中的核心事件集,这些事件适用于大多数的对象事件适用于大多数的对象上一页下一页退 出39392022-5-12022-5-1表表5-6 核心事件集核心事件集事件事件事件被激发后的动作事件被激发后的动作LoadLoad表单或表单集被加载到内存中表单或表单集被加载到内存中 UnloadUnload从内存中释放表单或表单集从内存中释放表单或表单集 InitInit创建对象创建对象DestroyDestroy从内存中释放对象从内存中释放对象 ClickClick用户使用主鼠标按钮

43、单击对象用户使用主鼠标按钮单击对象 DblclickDblclick用户使用主鼠标按钮双击对象用户使用主鼠标按钮双击对象 RightclickRightclick用户使用辅鼠标按钮单击对象用户使用辅鼠标按钮单击对象 GotfocusGotfocus对象接收焦点,由用户动作引起对象接收焦点,由用户动作引起LostfocusLostfocus对象失去焦点,由用户动作引起对象失去焦点,由用户动作引起KeypressKeypress用户按下或释放键用户按下或释放键 MousedownMousedown当鼠标指针停在一个对象上时,用户按下鼠当鼠标指针停在一个对象上时,用户按下鼠标按钮标按钮 Mousem

44、oveMousemove用户在对象上移动鼠标用户在对象上移动鼠标 MouseupMouseup当鼠标指针停在一个对象上时,用户释放鼠当鼠标指针停在一个对象上时,用户释放鼠标按钮标按钮 interactivechangeinteractivechange以交互方式改变对象值以交互方式改变对象值 programmaticchangeprogrammaticchange以编程方式改变对象值以编程方式改变对象值 上一页下一页退 出40402022-5-12022-5-1 在在VFP面向对象程序设计面向对象程序设计中,中,程序就是由表单及各种控件组成的程序就是由表单及各种控件组成的一个整体,包含在应用程

45、序中的表一个整体,包含在应用程序中的表单及各种控件都被称作对象:对象单及各种控件都被称作对象:对象是该程序包含数据和代码的实体。是该程序包含数据和代码的实体。 在程序设计中,用属性、事件和方在程序设计中,用属性、事件和方法来说明对象,属性就是对象的数法来说明对象,属性就是对象的数据,事件和方法则是对象中包含的据,事件和方法则是对象中包含的代码。代码。 上一页下一页退 出41412022-5-12022-5-1 在实际应用中,控件对象一般都被包含在容器对在实际应用中,控件对象一般都被包含在容器对象中,如命令按钮、文本框包含在表单中,页面包象中,如命令按钮、文本框包含在表单中,页面包含在页框中等,

46、那么当用户单击命令按钮时,是命含在页框中等,那么当用户单击命令按钮时,是命令按钮的令按钮的Click事件被触发,还是表单的事件被触发,还是表单的Click事件事件被触发,或者是两个对象的被触发,或者是两个对象的Click事件都被触发?事件都被触发? 实际上,实际上,当某事件发生时,只有与事件相关联的当某事件发生时,只有与事件相关联的最里层对象识别该事件,更高层的容器不识别这个最里层对象识别该事件,更高层的容器不识别这个事件。事件。因此当用户单击命令按钮时,只有该命令按因此当用户单击命令按钮时,只有该命令按钮的钮的Click事件被触发,而包含命令按钮的容器事件被触发,而包含命令按钮的容器表单,则

47、不识别这个表单,则不识别这个Click事件。即使该命令按钮没事件。即使该命令按钮没有与有与Click事件相关联的事件代码,而表单有自己的事件相关联的事件代码,而表单有自己的Click事件代码,也不会执行表单的事件代码。事件代码,也不会执行表单的事件代码。 2 容器层次和类层次中的事件容器层次和类层次中的事件上一页下一页退 出42422022-5-12022-5-1 表单具有Click事件和DblClick事件 命令按钮仅有Click事件处理代码 例如例如:在图在图6-2所示的表单中有一个命令按钮,表单设所示的表单中有一个命令按钮,表单设置了置了Click事件和事件和DblClick事件的处理代

48、码;命令按钮仅设事件的处理代码;命令按钮仅设置了置了Click事件的处理代码,那么当用户单击命令按钮时,事件的处理代码,那么当用户单击命令按钮时,不会触发表单的不会触发表单的Click事件事件上一页下一页退 出43432022-5-12022-5-1 对于表格控件来说,表格包含列控件,列控件又包含标头和文对于表格控件来说,表格包含列控件,列控件又包含标头和文本框控件。当事件发生时,只有与事件相关联的最里层对象识别本框控件。当事件发生时,只有与事件相关联的最里层对象识别该事件,更高层的容器不识别该事件,如图该事件,更高层的容器不识别该事件,如图6-3所示所示 表单的MouseMove事件 表格的MouseMove事件 表格列标头的MouseMove事件 表格列控件的MouseMove事件 上一页下一页退 出44442022-5-12022-5-1例外:例外:对于选项按钮组与命令按钮组来说,组中个别按钮如对于选项按钮组与命令按钮组来说,组中个别按钮如果没有编写事件处理代码,则当事件发生时将执行组事件的果没有编写事件处理代码,则当事件发生时将

温馨提示

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

评论

0/150

提交评论