Welcome

首页 / 软件开发 / VFP / 看实例学VFP:编程方式创建类

看实例学VFP:编程方式创建类2009-02-22 www.bianceng.cn 老马上两个例子中介绍了使用“类设计器”来交互方式创建类,与交互方式相对应的,也可以用编程方式创建类。不过用这种方式来创建类很麻烦,并且需要极大的耐心去调试,相对来说用得比较少。

算是扩充一下知识面吧,本文对编程方式定义类的语句格式做一个简单的介绍,但是不必深究和浪费太多的时间,毕竟已经有可视化的、强大的“类设计器”可以用了;否则VFP这三个字母中,打头的这个V(Visual)也就失去其意义了。本文末尾给出了编程方式创建类的一个简单示例代码,运行时界面如下图:

运行时单击表单的空白处触发表单的click事件,弹出对话框后更新label控件的caption属性值,表单变成下图这样子:

vfp中使用DEFINE CLASS语句来定义类,并可以同时指定类和子类的属性、事件和方法。我们看一下DEFINE CLASS语句的格式:

DEFINE CLASS 类名1 AS 基类名[[Protected 属性名表]属性名=表达式……] [ADD OBJECT [Protected] 对象名 AS 类名2 [NOINIT] [WITH 属性名=表达式,…]… [[Protected] FUNCTION|PROCEDURE 对象引用.事件名 语句序列 [ENDFUNC|ENDPROC] …]ENDDEFINE
说明:

(一) 要使用Define Class定义的类来创建对象,可以在程序中使用CreatObject()函数。

(二)参数“类名1”指定要创建的类的名称,“基类名”指出一个类或子类的父类,该父类可以是vfp的系统基类或者是另一个用户定义类。

(三)Protected属性名表阻止从类或子类定义的外部访问或改变对象的属性。

(四)ADD OBJECT从一个vfp基类、用户定义类、子类及OLE定制控件向灰或子类定义中添加一个对象。PROTECTED阻止从类或子类定义的外部访问或改变对象的特性。Protected关键字必须放在对象的前面,否则vfp会生成一个语法错误。

(五)“AS 类名2”指出包含加入类定义中的对象的类或子类名。参数NOINIT指出当一个对象被添加时,Init方法不被执行。WITH 属性名=表达式指出加到类或子类定义中去的对象的属性和属性值的列表。

(六)FUNCTION(函数)或PROCEDURE(过程)可在类或子类定义内创建一个事件和方法程序,以ENDFUNC或ENDPROC结束。

(七)用DEFINE CLASS定义的类是一组命令,象一个程序中的过程一样,一般放在程序的后面。

(八)示例代码:

Public MyformMyform=CREATEOBJECT("Form1") &&根据定义表单类建立对象Myform.Width=290Myform.Caption="编程入门网-编程方式创建类和表单"Myform.Closable=.f. &&禁用表单的关闭按钮MYform.AutoCenter=.t.Myform.ShowMyform.Circle(60,100,150,1)READ EVENTSDEFINE CLASS Form1 As Form &&定义表单类 ADD OBJECT COMM1 AS CommandButton; &&定义表单中的命令按钮With Caption="退出",BackColor=2,Left=40 ADD OBJECT Label1 AS Label; &&定义表单中的标签With Top=60,Left=40,AutoSize=.t.,Caption="准备好了吗?" PROCEDURE Click=MESSAGEBOX("表单的click事件!")THISFORM.Label1.Caption="编程入门网祝大家学习顺利!" ENDPROC PROCEDURE COMM1.ClickMESSAGEBOX("HELLO!")THISFORM.RELEASECLEAR EVENTS ENDPROCENDDEFINE
将以上的代码保存为“编程方式创建类和表单.PRG”,运行该程序文件即可。

本例代码在Win2003+VFP6.0环境下调试通过。