8.2 对象的属性、事件和方法
对象(Object)是一个具有属性(数据)和方法(行为方式)的实体。如现实生活中的一个人就是一个对象、一辆卡车也是一个对象。在VFP中,一张表单、一个文本框、一个按钮等都是常见的对象。
每个对象都具有其自身的属性以及与之相关的事件和方法。用户可通过设置对象的属性、事件和方法来对对象进行各种操作。
一、对象的属性
属性(Property)定义对象的特征或某一方面的行为。如卡车的颜色、吨位等都是用来描述卡车的某些特征的属性。对象的某些属性值既能在属性窗口中设置,也能通过编程的方式在运行阶段进行设置。但也有些属性不能被设置或修改,因为它们是只读的,这些属性在属性窗口中以斜体显示。在程序中设置属性的一般格式是:
表单名·对象名·属性名=属性值
例8-1:创建一个表单,按以下各属性值设置有关的属性,并注意观察表单的变化。
标题(Caption):我的表单;
图标(Icon):c:…\devstudio\vfp\samples\graphics\icons\elements\earth.ico;
名称(Name):myform;
背景色(Backcolor):255,0,0;
前景色(Forecolor):0,255,0;
最大化按钮(Maxbutton):.F.;
最小化按钮(Minbutton):.F.。
二、对象的事件
事件(Event)是由VFP预先定义好的、能够被对象识别的特定动作。通常事件是由一个用户动作产生,如单击(Click)事件等。也可以由程序代码或系统产生,如计时器(Timer)事件等。
1.核心事件
不同的对象所能识别的事件虽然有所不同,但事件集合是固定的,用户不能创建新的事件。
无论什么对象,至少拥有Init、Destroy和Error等3个事件,这就是所谓的对象的最小事件集。
为满足系统和用户的各种不同需要,VFP提供了丰富的内部事件。表8-2列出了大多数对象的核心事件。
表8-2 对象的核心事件
续表8-2
事件发生后,系统会执行相应的事件代码,以对此动作进行响应。事件代码又称为事件过程(Event Procedure),它是为处理特定的事件而编写的一段程序。当事件由用户触发(如Click)或由系统触发(如Load)时,对象就会对该事件做出响应(Respond),执行相应的事件代码。一个对象可以识别一个或多个事件,因此,可为一个对象设置一个或多个事件代码。
2.事件触发的顺序
在VFP中,大多数事件的触发是用户与VFP交互操作时伴随着其他一系列事件发生的。但有些事件的触发顺序是固定的(如表单在创建或删除时发生的事件序列),还有一些事件是独立发生的(如Timer事件)。
VFP中一个动作可能触发多个事件,甚至是多个对象的多个事件。表8-3给出了一些动作及其触发的多个事件的顺序。
表8-3 一个动作触发多个事件顺序表
例如,当在表单中通过用鼠标单击对象2将焦点从对象1切换到对象2时,依次发生的事件是:
图8-17 调试器窗口
对象1的Valid事件、对象2的When事件、对象1的Lost Focus事件、对象2的Got-Focus事件、对象2的MouseDown事件、表单的Paint事件、对象2的MouseUp事件、对象2的Click事件。
要查看事件的触发顺序,可执行“工具”菜单中的“调试器”命令,打开“调试器”窗口,如图8-17所示。从调试器窗口的“工具”菜单中选择“事件跟踪”,打开“事件跟踪”对话框,并在其中选择“开启事件跟踪”,如图8-18所示。
图8-18 事件跟踪对话框
例8-2:设置表单的Init、Activate、Load的事件代码,运行表单并观察事件的触发顺序。
Init事件的代码:
@5,5 say"这是Init事件"
wait
Activate事件的代码:
@10,5 say"这是Activate事件"
wait
Load事件的代码:
@15,5 say"这是Load事件"
wait
运行表单后,将会发现这3个事件的触发顺序是Load、Init和Activate。
3.事件循环
利用VFP进行应用程序设计时,必须创建事件循环(Event Loop)。在VFP中,事件循环由READ EVENTS命令建立,由CLEAR EVENTS命令终止。
当发出READ EVENTS命令时,VFP启动事件处理,发出CLEAR EVENTS命令时停止事件处理。如果CLEAR EVENTS命令是位于某程序代码中且该命令后还有其他命令,则执行CLEAR EVENTS命令后,程序继续执行紧跟在READ EVENTS后面的那条语句。
在设计应用程序时,设置好环境并显示初始用户界面之后,就可以着手建立事件循环,以等待用户操作并进行响应。READ EVENTS命令通常出现在应用程序的主程序中、主菜单的清理代码中、主表单的某事件代码中。在启动事件循环之前需要建立一种退出事件循环的方法,而且必须确保界面有这种发出CLEAR EVENTS命令的机制。否则,将会陷入死循环,此时可用Esc键强制中断程序的执行,或重新启动计算机。
三、对象的方法
方法(Method)是对象能够执行的一个操作。在VFP中,方法是与对象相关联的过程(完成某种操作的处理代码),通常也称为方法程序,它紧密地和对象连接在一起。例如,列表框有这样一些方法程序维护它的列表内容:AddItem、RemoveItem和Clear等。方法也可以由用户自己创建,因此其集合可以无限制地扩展。
事件可以具有与之相关联的方法程序。例如,为某命令按钮的Click事件编写的方法程序将在单击该命令按钮时执行。方法程序也可以独立于事件而单独存在,它在系统中被显式地调用。
调用方法的语法如下:
引用对象·方法程序
如:FormSet1.Form1.Text2.Set Focus
ThisForm.Release
四、对象的引用
对象的引用分绝对引用和相对引用两种。对象间用“.”分隔。
绝对引用是指从最高层次开始引用对象,给出对象的绝对地址。如:
_Screen.FormSet1.Form1.Text1
相对引用是指相对于某个层次的引用,给出对象的相对地址。如:
ThisForm.Text1
相对引用的关键字见表8-4。
表8-4 相对引用的属性和关键字
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。