对象模型与事件模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Resize事件 事件
调整对象大小时发生。 适用于:列、容器对象、控制对象、表单、表格、OLE 绑定型控制、OLE容器控制、页框、工具栏。
2010年12月10日星期五
Visaul FoxPro 程序设计
23Biblioteka Baidu
数据环境事件
AfterCloseTables事件 事件 当在数据环境中为Form、FormSet或Report释放指定 的表或视图时发生。 对于表单或表单集,该事件发生在Unload事件之后或 由数据环境打开的表或视图被关闭之后。 对于报表,该事件发生在此报表的数据环境所打开的 任一表或视图被关闭之后。 任何时候调用CloseTables方法都发生此事件。 BeforeOpenTables事件 事件 表单、表单集或报表的数据环境相关的表或视图打开 之前发生。 对于表单或表单集,该事件发生在Load事件之前。
2010年12月10日星期五
Visaul FoxPro 程序设计
3
类(CLASS)
类定义了对象特征以及对象外观和行为的模板。 类是一组具有共同特性(行为)的对象的抽象。 四大特征:
继承性:在类、子类和对象之间自动共享方法和数据 的一种机制。 多态性:允许相关的对象对同一消息做出不同反应。 封装性:在对象内部,数据和方法是不可分割的,只 有通过对象自身的方法才能访问数据。 抽象性:允许用户忽略实施细节,而从更高的等级上 考虑一个实体。
2010年12月10日星期五 Visaul FoxPro 程序设计 15
6.3 常用事件
鼠标事件 键盘事件 表单事件 控件焦点事件 数据环境事件
2010年12月10日星期五
Visaul FoxPro 程序设计
16
鼠标事件
MouseMove事件 :用户在一个对象上移动鼠标时发生。 事件 Click事件 :鼠标单击对象时发生。 事件 RightClick事件 :在控制上按下并释放鼠标右键时发生。 事件 DblClick事件 :当连续两次快速按下左键并释放时发生。 事件 MouseDown事件 :当用户按下一个鼠标键时发生。 事件 MouseUp事件 :当用户释放一个鼠标键时发生。 事件 DragDrop事件 :当完成拖放操作时发生。 事件 DragOver事件 :控制拖过目标对象时发生。 事件 DropDown事件 :单击组合框控制中的下箭头后发生。 事件 Scrolled事件 :单击滚动条时发生。 事件 DownClick事件 :当单击控制的下箭头时发生。 事件 UpClick事件 :在用户单击控制的向上箭头时发生。 事件
系统变量_SCREEN表示屏幕对象。
2010年12月10日星期五 Visaul FoxPro 程序设计 12
设置对象的属性
设计时设置:即在“属性”窗口中设置对象 属性。 运行时设置:引用对象.属性=值 例:
FormSet1.Form1.Text1.Value=DATE() FormSet1.Form1.Text1.ForeColor=RGB(0,0,0) FormSet1.Form1.Text1.BackColor=RGB(192,192,192) FormSet1.Form1.Text1.FontName=“黑体” 以上均为 绝对引用。
此两事件用于表单和表单集。
2010年12月10日星期五 Visaul FoxPro 程序设计 21
表单事件(2)
Activate事件 事件 当激活表单、表单集或页面对象,或显示工具栏 对象时发生。 Deactivate事件 事件 对于一个容器对象,当所包含的对象没有焦点而 不再处于活动状态时发生。 对于工具栏,当使用Hide方法隐藏工具栏时发生。 卸载表单时不发生。 激活新对象时,旧对象的Deactivate事件发生。
2010年12月10日星期五
Visaul FoxPro 程序设计
14
调用方法程序
可以在应用程序的任何地方调用已存在对象的方法 程序。 语法:引用对象.方法程序 例: FormSet1.Form1.Show FormSet1.Form1.Text2.Setfocus 对于有返回值的方法程序必须以圆括号结尾(类似 于函数调用),如果有参数传递给方法程序,则参 数要放在括号里。
2010年12月10日星期五 Visaul FoxPro 程序设计 5
对象(OBJECT)
类的一个实例,包括了数据(属性)和过程(操作、 方法),是动态概念。 VFP中指主要表单、表单集及各种控件(持久对象)。 对象根据所基于的类的性质,也可以分为容器对 象和控件对象。 程序由一个或多个类组成,在程序运行时需要创 建该类的各个对象。 每个对象都有属性以及与之相关的事件和方法 。
此两事件用于表单、表单集、页面、工具栏。
2010年12月10日星期五 Visaul FoxPro 程序设计 22
表单事件(3)
Paint事件 事件
表单或工具栏重画时发生。 应用于表单、工具栏。 移动或放缩Form或控件、改变任何一个能影响大小和外 观的变量及调用Refresh方法时避免使用 。 Refresh
如果控件与类均有代码,则执行控件的代码。 如果没有与控件相关联的代码,VFP将在类层次的更高层 上查看是否有与此事件相关的代码。找到则执行。
2010年12月10日星期五 Visaul FoxPro 程序设计 9
方法(METHOD)
对象能够执行的一个操作。 是与对象相关联的过程或函数。 用户可自定义方法程序。 事件可以具有与之相关联的方法程序。 当事件被激 活时,相关的方法代码被执行。 方法程序也可以独立于事件而单独存在,但它在系 统中要被显式地调用。
第六章 对象模型与事件模型
面向对象的程序设计
6.1 面向对象程序设计概述
结构化程序设计
用功能分解来达到面向过程的方法以解决问题。
面向对象程序设计(OOP)
基于问题对象的自底向上的功能综合。 面向对象的方法将过程和信息组合成单元(类和 对象)。这些单元中的信息通常是隐藏的。 面向对象的程序设计是通过对类、子类和对象等 的设计来实现的。
2010年12月10日星期五 Visaul FoxPro 程序设计 17
键盘事件——KeyPress事件
当用户按下并释放某个键时发生此事件。 适用于:复选框、组合框、命令按钮、编辑框、表 适用于: 单、列表框、选项按钮、微调、文本框。 通常具有焦点的对象接收该事件。 两种特殊情况下,表单接收此事件: 表单中不包含控件,或表单的控件都不可见或未 激活。 表单的KeyPreview属性设置为“真”。表单首先 接收KeyPress事件,然后具有焦点的控件才接收 此事件。
2010年12月10日星期五 Visaul FoxPro 程序设计 20
表单事件(1)
Load事件 事件
在创建对象前发生。 表单集的Load事件先于表单的Load事件。 在该事件发生时还没有创建任何控件对象,因此 在此事件中不能有对控件进行处理的代码。
Unload事件 事件
在对象被释放时发生。 是释放表单或表单集的最后一个事件。
2010年12月10日星期五 Visaul FoxPro 程序设计 18
改变控件内容的事件
InteractiveChange事件
在使用鼠标或键盘更改控件的值时发生。 适用于:复选框、组合框、命令组、编辑框、列 适用于: 表框、选项组、微调、文本框。 在每次交互更改对象时,都要发生此事件。
ProgrammaticChange事件
2010年12月10日星期五
Visaul FoxPro 程序设计
6
属性(PROPERTY)
每个对象都有属性。 定义了对象的特征或某一方面的行为。 属性由对象所基于的类决定。 属性值既能在设计时也可在运行时进行设置。 基类的最小属性集:
Class:该类属于何种类型。 BaseClass:该类的基类。 ClassLibray:类库文件。 ParentClass:该类的父类。
2010年12月10日星期五 Visaul FoxPro 程序设计 13
设置对象的属性
利用WITH……ENDWITH简化语句 WITH FormSet1.Form1.Text1 .Value=DATE() .ForeColor=RGB(0,0,0) .BackColor=RGB(192,192,192) .FontName= “黑体” ENDWITH
VFP核心事件集。详见教材P153。
2010年12月10日星期五 Visaul FoxPro 程序设计 8
事件激活的顺序
表单集的事件激活顺序:详见教材P155。 容器和控件事件:用户以任何一种方式与对象交互 时,每个对象都独立地接收自己的事件。容器不处 理所包含控件的相关事件。 例外:命令按钮组和选项按钮组 命令按钮组和选项按钮组。 命令按钮组和选项按钮组 类与控件事件:
2010年12月10日星期五
Visaul FoxPro 程序设计
2
面向对象技术的优点
面向对象技术是采用以对象为中心的问题求 解方法,更加自然地、直接地反映了现实中 的客观世界,大大降低了程序开发的工作量 和系统维护的费用。 面向对象程序设计能够使消息传递机制与分 布式并行处理系统、网络通信等模型自然地 融合。
2010年12月10日星期五 Visaul FoxPro 程序设计 24
其他事件
Timer事件 事件
适用于计时器。 当经过Interval属性中指定的毫秒数时发生。
Init事件:当创建对象时发生。 事件: 事件
容器所包含的对象的Init事件在容器的Init事件之前发 生。
Destroy事件:当释放一个对象的实例时发生。 事件: 事件
2010年12月10日星期五 Visaul FoxPro 程序设计 11
相对引用所用的属性和关键字
属性: ActiveForm:当前活动表单。 ActivePage:页框中活动的页面。 ActiveControl:当前表单中有焦点的控件。 Parent:当前对象的直接容器。 关键字:只能在方法程序或事件处理代码中使用。 THIS:当前对象。 THISFORM:当前对象所在的表单。 THISFORMSET:当前对象所在的表单集。
2010年12月10日星期五 Visaul FoxPro 程序设计 7
事件(EVENT)
对象可识别的一个动作。 用户不能自定义事件 一般由用户或系统激活。 可编写代码来响应事件。 基类的最小事件集:
Init:当对象创建的时候激活。 Destroy:当对象从内存中释放时激活。 Error:当事件或方法程序中出现错误时激活。
2010年12月10日星期五 Visaul FoxPro 程序设计 4
基类(BASS CLASS)
VFP系统提供的类叫基类。由其他类派生的类叫子 类。 父类:派生出其子类的类。可以是基类,也可是基 类的子类。 VFP的基类有两种:容器类和控件类。
容器类:包容其他类的基类。将容器类的对象加入表单 后,无论在设计时还是在运行时,均可以将该容器类的 对象作为一个整体进行操作,也可以分别对其包容的对 象处理。 控件类:可以包含在容器类中的基类。
2010年12月10日星期五
Visaul FoxPro 程序设计
10
6.2 处理对象
引用对象
必须清楚对象的容器层次关系和对象的名。 各个对象之间、对象与属性之间用“· ”进行分隔。 绝对引用:从容器的最高层次引用对象,给出对 象的绝对地址。 如:Formset1.Form1.Command1 相对引用:在容器层次中相对于某个容器的引用。 通常运用于某个对象的事件处理代码或方法程序 代码中。 如:This.Parent.Command2
在程序代码中更改一个控件值时发生。 其他同InteractiveChange 事件。
2010年12月10日星期五 Visaul FoxPro 程序设计 19
焦点:用以指出当前被 操作的对象。
焦点事件
GotFocus事件 :当对象接收到焦点时发生。 事件 当表单没有控制或者它的所有控制已废止或不可 见时表单才能接收焦点。 当对象的Enabled属性和Visible属性均为“真”时 对象才能接收焦点。 LostFocus事件 :当对象失去焦点时发生。 事件 When事件 :在控件接收焦点之前发生。 事件 Valid事件 :在控件失去焦点之前发生。 事件