加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[原创] 在VFP中创建自己的生成器

(2011-11-21 00:36:57)
标签:

vfp

自定义

生成器

分类: vfp原创

    VFP中一些控件程序自带了生成器,当我们自己创建一个类时,大家有没有想过自己也给这个类创建一个生成器,其实自定义生成器并不难,只要完成以下几个步骤即可(以我的雨田Gridtree生成器为例):

【第一步】创建一个新的项目,名叫:gridtreebuilder

【第二部】创建一个程序:gridtreebuilder.prg,代码如下

PUBLIC OSelGridtreeRef

LOCAL LASELECTEDOBJECTS( 1 )

DO CASE

  CASE ASELOBJ(LASELECTEDOBJECTS) >= 1 AND UPPER(LASELECTEDOBJECTS(1).CLASS) = 'GRIDTREE'

     OSelGridtreeRef = LASELECTEDOBJECTS(1)

     SET CLASSLIB TO Gridtree ADDITIVE

     DO FORM Gridtreebuilder

  CASE ASELOBJ(LASELECTEDOBJECTS) >= 1 AND UPPER(LASELECTEDOBJECTS(1).CLASS) = 'TREEVIEW'

     OSelGridtreeRef = LASELECTEDOBJECTS(1).GRIDTREE

     SET CLASSLIB TO Gridtree ADDITIVE

     DO FORM Gridtreebuilder

  OTHERWISE

     = MESSAGEBOX('只有当基于GridTree的类在表单设计器中被选择,GridTree生成器才会被执行!’)

ENDCASE

RELEASE OSelGridtreeRef

RETURN

 

说明:1ASELOBJ()函数表单设计器类设计器或者代码编辑窗口中当前选定的控件或

         容器的对象引用存入指定的变量数组。

      2OSelGridtreeRef保存选定的控件对象,以便在在生成器表单对其进行引用。当然也可以在打开生成器表单时将定的控件对象传递给表单

【第三步】创建一个表单Gridtreebuilder”类似如下图:

http://s7/middle/4998a42bxb22d6aa825c6&690在VFP中创建自己的生成器" TITLE="[原创] 在VFP中创建自己的生成器" />

   在表单上放一些用于设置参数的控件,那么这些设置如何起作用呢?别忘了第二步的“OSelGridtreeRe”这个全局变量,有了这个变量,你可以随时访问选定对象的属性及方法,假设选定的对象有一个“table”这个属性,生成器窗口上有一个文本框text1用于设置选定控件的Table属性,以下代码可以用Text1的值来设置Table属性:OSelGridtreeRe.table = allt(thisform.text1.value),这些代码可以放在生成器表单的一个确定按钮。呵呵!就这么简单。

【第四步】 gridtreebuilder.prg设置为主程序,并将其编译为“APP”文件。

【第五步】 VFP编程语言中注册这个生产器,注册的过程是,首先将Gridtreebuilder.app文件复制到VFP的Wizards文件夹中,然后在builder.dbf数据表中注册生成器的信息 

   Wizards文件夹位置如下图:

 http://s1/middle/4998a42bxb22d87743cd0&690在VFP中创建自己的生成器" TITLE="[原创] 在VFP中创建自己的生成器" />

builder.dbf数据表内容如下图:
http://s1/middle/4998a42bxb22d9c960b70&690在VFP中创建自己的生成器" TITLE="[原创] 在VFP中创建自己的生成器" />

    注册生成器的代码:

lcFile  = HOME(1) + 'wizards\Gridtreebuilder.app'

lcTable = HOME(1) + 'wizards\builder.dbf'

 

*将生成器文件复制到VFP程序的相应文件夹中

COPY FILE Gridtreebuilder.app TO "&lcFile"

 

IF NOT USED("&lcTable")

   USE "&lcTable" IN 0

ENDIF

 

*在相应数据表中注册GridTree类生成器

LOCATE FOR UPPER(type)='GRIDTREE'

IF !FOUND()

   APPEND BLANK

ENDIF

REPLACE  name WITH 'GRIDTREE生成器', type WITH 'GRIDTREE', program WITH 'wizards\Gridtreebuilder.app'

 

USE IN &lcTable

 

MESSAGEBOX('注册成功')

 

注销生成器的代码:

lcFile  = HOME(1) + 'wizards\Gridtreebuilder.app'

lcTable = HOME(1) + 'wizards\builder.dbf'

 

IF FILE("&lcFile")

   DELETE FILE "&lcFile"

ENDIF

 

 

SELECT 0

USE "&lcTable" ALIAS builder

 

LOCATE FOR UPPER(builder.type)='GRIDTREE'

IF FOUND()

   DELETE

ENDIF

 

PACK

 

 

     完成以上五步,就可以使用自定义的生成器了!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有