首页 百科知识 事件和方法

事件和方法

时间:2023-10-21 百科知识 版权反馈
【摘要】:用户可通过设置对象的属性、事件和方法来对对象进行各种操作。事件发生后,系统会执行相应的事件代码,以对此动作进行响应。当发出READ EVENTS命令时,VFP启动事件处理,发出CLEAR EVENTS命令时停止事件处理。在启动事件循环之前需要建立一种退出事件循环的方法,而且必须确保界面有这种发出CLEAR EVENTS命令的机制。事件可以具有与之相关联的方法程序。例如,为某命令按钮的Click事件编写的方法程序将在单击该命令按钮时执行。

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 对象的核心事件

img289

续表8-2

img290

事件发生后,系统会执行相应的事件代码,以对此动作进行响应。事件代码又称为事件过程(Event Procedure),它是为处理特定的事件而编写的一段程序。当事件由用户触发(如Click)或由系统触发(如Load)时,对象就会对该事件做出响应(Respond),执行相应的事件代码。一个对象可以识别一个或多个事件,因此,可为一个对象设置一个或多个事件代码。

2.事件触发的顺序

在VFP中,大多数事件的触发是用户与VFP交互操作时伴随着其他一系列事件发生的。但有些事件的触发顺序是固定的(如表单在创建或删除时发生的事件序列),还有一些事件是独立发生的(如Timer事件)。

VFP中一个动作可能触发多个事件,甚至是多个对象的多个事件。表8-3给出了一些动作及其触发的多个事件的顺序。

表8-3 一个动作触发多个事件顺序表

img291

例如,当在表单中通过用鼠标单击对象2将焦点从对象1切换到对象2时,依次发生的事件是:

img292

图8-17 调试器窗口

对象1的Valid事件、对象2的When事件、对象1的Lost Focus事件、对象2的Got-Focus事件、对象2的MouseDown事件、表单的Paint事件、对象2的MouseUp事件、对象2的Click事件。

要查看事件的触发顺序,可执行“工具”菜单中的“调试器”命令,打开“调试器”窗口,如图8-17所示。从调试器窗口的“工具”菜单中选择“事件跟踪”,打开“事件跟踪”对话框,并在其中选择“开启事件跟踪”,如图8-18所示。

img293

图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 相对引用的属性和关键字

img294

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈