看实例学VFP:编程方式创建类

上两个例子中介绍了使用“类设计器”来交互方式创建类,与交互方式相对应的,也可以用编程方式创建类。不过用这种方式来创建类很麻烦,并且需要极大的耐心去调试,相对来说用得比较少。

算是扩充一下知识面吧,本文对编程方式定义类的语句格式做一个简单的介绍,但是不必深究和浪费太多的时间,毕竟已经有可视化的、强大的“类设计器”可以用了;否则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 控件 禁用
, 创建类
, 方式
, 库名表名
, 定义方式
表单类
,以便于您获取更多的相关知识。

时间: 2024-11-03 17:12:45

看实例学VFP:编程方式创建类的相关文章

看实例学VFP:编程方式向表单添加新控件

vfp的"表单控件工具栏"包含了标签(Label).文本框(TextBox)等常用的控件类,以前我们向表单添加控件时多数都是在设计时使用该工具栏. 单击该工具栏上的某个控件图标后,即可在表单上拖动.绘制出所需要的控件.但有时我们需要的控件有可能在设计时无法确定,而是在应用程序运行时根据具体情况动态创建的,这时就需要以编程的方式,通过使用addobject()函数或creatobject()函数动态地向表单添加新控件. 本例在命令按钮的click事件代码中,使用系统基类grid动态创建出

看实例学VFP:用sql命令创建表

本文是一个在vfp中使用sql命令创建表的实例.用sql命令创建表结构的格式如下: create table 表名 (字段名1 类型(宽度[,小数位]),字段名2 类型(宽度[,小数位]),-) 在看实例学VFP:示例数据库一文中已经给出了"网站信息表"的表结构如下表: 字段名 类型 宽度 编号 字符型 5 网站名称 字符型 12 网站网址 字符型 24 那么我要创建相同的表结构并且表名为"网站信息表2"的sql命令如下: create table 网站信息表2 (

看实例学VFP:利用多个表中的字段创建新表

本例中再来复习一下select语句中的inner join子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例的主要操作是在表单的init事件中完成的,在该事件中进行连接查询并将查询结果输出为一个临时表(该表包括了"人员信息表"的"姓名,性别,基本工资"3个字段以及"工资表"的"奖金,生活补助,养老保险"3个字段),最后将该表设为表格控件的数据源.本例应用到了数据环境,并使用"数

看实例学VFP:用SELECT语句创建查询

vfp中可以使用sql语句操作表,并且在使用sql语句操作表时不需要打开数据库.本例介绍的是select查询语句(数据检索),关于select语句的格式请参考:select SQL 命令 或sql语言教程. 在看实例学VFP:对表中记录进行定位与查找操作一文中,我们是使用locate语句作记录定位并同时使用了eof()函数,如果该函数返回真值,说明数据表中不存在所查询的记录并给出提示信息.本例用sql语句对这一部分进行了改写.与上例的区别大致的如下: 1.本例依然使用表格控件作为数据显示控件,表

看实例学VFP:文本框控件

文本框控件(textbox)主要用于接收或显示数据,在vfp中是一个常用控件,差不多每个程序都要用到它.vfp基础教程-文本框(textbox)控件及vfp基础教程-数组中已经分别对文本框控件和数组做了介绍,本文来设计一个将这二者结合起来应用的例子. 关于文本框控件数据源的处理: 如果在表单中使用数据环境,可以在"数据环境设计器"中拖动表的各个字段到表单上,系统会自动生成各个字段对应的标签及文本框,并且文本框的数据源会自动与表中对应的字段绑定,这是一种处理方式:另外也可以不使用数据环境

看实例学VFP:进度条控件

我们在使用Windows系统的时候,如果复制一个较大的文件或者是从网上下载东西,在复制或下载的过程中都会出现一个对话框,并且在该对话框中会有一个进度条来显示复制或下载的进度.在vfp可以使用进度条控件(ProcessBar)来实现类似的功能,有的场合下可以用到它,比如软件包含了数据备份的功能,可以用它来显示备份的进度.但是这个控件的使用不是必须的,使用它无非是可以让你编的东西看起来更专业些. 进度条控件有几个比较重要的属性,如下: min:进度条的最小值,默认为0. max:进度条的最大值,默认

看实例学VFP:去除查询结果中的重复记录

在看实例学VFP:将查询结果输出为表或文本文件以及之前的几个关于select语句应用的例子中,组合框控件Combo1的数据方面的属性我们是这样设置的:RowSourceType属性值设置为"1-值",RowSource属性值设置为"部门,性别,学历",即在设计时已经将组合框控件的数据源固定了.但这种处理方式在有的情况下是不合理的,比如本文要做这样一个例子:希望在运行时可以在组合框控件里选择"部门",按"部门"来查询.我们已经知

看实例学VFP:更复杂的查询

在看实例学VFP:对表中记录进行定位与查找操作及看实例学VFP:用SELECT语句创建查询这两个例子中,我们可以在查询时可以从组合框中选定一个要查询的字段.本例对这种查询方式再做进一步改进,使之在查询时不仅可以从一个组合框中选取要查询的字段,还可以从另一个组合框中选定操作符(如<.=.>等),从而实现更复杂的查询.本例应用到了数据环境,并使用"数据1"数据库中的"人员信息表"作为数据环境的数据源,关于该数据库的情况已经在看实例学VFP:示例数据库一文中给

看实例学VFP:页框控件的使用

页框(pageframe) 也是vfp的一个基本控件,使用它可以制作出类似于windows对话框的效果,关于这个控件的常用属性和方法请参考vfp基础教程-页框和页一文. 页框控件本身是一个容器,其中可以包含若干个页(page):而页也是容器,可以在其中添加各种对象,因此无论是在设计时添加对象或者是代码引用,都要比别的控件麻烦些.在使用这个控件时需要注意:如果设计时要向某个页中添加对象,一定要在页框的编辑状态下选中该页的标签,然后再向该页中添加控件:另外在不同页之间切换时,需要处理好数据源的问题.