上两个例子中介绍了使用“类设计器”来交互方式创建类,与交互方式相对应的,也可以用编程方式创建类。不过用这种方式来创建类很麻烦,并且需要极大的耐心去调试,相对来说用得比较少。
算是扩充一下知识面吧,本文对编程方式定义类的语句格式做一个简单的介绍,但是不必深究和浪费太多的时间,毕竟已经有可视化的、强大的“类设计器”可以用了;否则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 Myform Myform=CREATEOBJECT("Form1") &&根据定义表单类建立对象 Myform.Width=290 Myform.Caption="编程入门网-编程方式创建类和表单" Myform.Closable=.f. &&禁用表单的关闭按钮 MYform.AutoCenter=.t. Myform.Show Myform.Circle(60,100,150,1) READ EVENTS DEFINE 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.Click MESSAGEBOX("HELLO!") THISFORM.RELEASE CLEAR EVENTS ENDPROC ENDDEFINE
将以上的代码保存为“编程方式创建类和表单.PRG”,运行该程序文件即可。
本例代码在Win2003+VFP6.0环境下调试通过。
查看全套“菜鸟也学VFP”教程
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 表单
, 属性
, 子类
, 类名
, comm 控件 禁用
, 创建类
, 方式
, 库名表名
, 定义方式
表单类
,以便于您获取更多的相关知识。