论坛登陆 注册 文章专区 投稿文章 旧版浏览
首页 | 页界资讯 | 安全动态 | 网络应用 | 组网技术 | 软件应用 | 工具软件 | 网管知识 | 帮助
文学 | 操作系统 | 注 册 表 | 编程语言 | 数 据 库 | 服 务 器 | 网页设计 | 图形图象 | VIP
论坛 | 网络安全 | 安全防范 | 黑客技术 | 硬件学堂 | 路由技术 | 搜索研究 | 站长经验 | 投稿
专题 | 教育频道 | 特色专题 | 精文荟萃 | 聊天通讯 | 网络文学 | 论坛社区 | 广告服务 | 旧版
设为首页 加入收藏
当前位置:首页>>文章>>数据库>>FoxPro>>正文

Foxpro 类

www.xker.com 作者:不详 来源:网络转载 加入日期:2005-11-18 7:31:19
Foxpro 类:

类又是个东西?会不会理解起来很累?

其实很简单,我们在编一个程序时,一般一种对象会很多次用到,比如表单,这些表单可能千差万别,但某些表单往往有些共同之处,比如其windowtype属性都为“1-模式”,表单中都有“确定”和“取消”两个按钮,按钮中都有“thisform.release”这样的语句等等。在以前我们每新建一个表单都需要去设置这些属性及控件,十分麻烦,那么有没有办法建一个具有这些共同特性的表单,在需要时调用,共同的部分就不需要设置了,只需设置那些独特的部分。

“类”就是专门干这事的,之所以叫类,就是因为它有一些共同特性,代表了一类对象,就好象模板一样,我们可以根据需要建立各种各样的类,并将它们保存起来,以供以后调用,这样就可以省去很多麻烦。下面我们就来讲怎样建立一个类,就以上面所说的那个例子为例。

一、建立一个类

  1. 在项目管理器上选择“类”页面;
  2. 按“新建”,出现如 图1
  3. 在“类名”中输入您为这个类所起的名称(比如gf),在“派生于”中选择这个类是从那一类对象(基类)中生成的(在此是form),在“存储于”输入一个文件名,即将此类存储于那个文件中(比如myclass,该文件的扩展名是vcx,叫类库);

    提示

    一个类库文件可以存储多个类,因此您也可以选择某一个已有的类库文件,将此类存储在里面。
  4. 按“确定”进入类设计器,就象表单设计器一样,然后您就可以象设计一个普通表单一样设计这个类;
  5. 设计好后,存盘、关闭,即可以在项目管理器中看到如 图2 的情形,这样一个类就设计好了。

二、调用一个类

对于一般控件做的类,调用非常简单,进入表单设计器,然后在项目管理器中选择所需要的类,用鼠标将其拖入到相应的表单上即可。

如果是表单类,则稍微麻烦些,当您把一个表单类拖入到表单设计器时,因为设计器中已经有一个表单了,这时系统会提示您建一个表单集,按“是”,则表单被放入了表单集,如果您不想要一个表单集,那么您可以将原来的表单删除,用菜单上的“表单/移除表单”,然后再用“表单/移除表单集”将表单集取消。

三、做一个稍微复杂的类

我先不说这是个什么,看你什么时候能看出来:)

  1. 进入项目管理器的类页面,按“新建”,类名和文件名您自己定,“派生于”选“container”,即容器,其borderwidth属性设为0;
  2. 在左上角放一个文本框,属性设置为:
    top 0
    left 0
    height 25
    width 97
    specialeffect 1-平面
    fontsize 15
    fontbold .T.-真
    disabledforecolor 0,0,0 (黑色)
    alignment 2-中间
  3. 再在容器的左上角放一个“计时器”控件,其interval属性设为1000,timer事件中写入如下语句:
    this.parent.text1.value=time()
  4. 将容器调到与文本框大小一样。
  5. 存盘退出。

知道是什么了吗?还不知道?那就新建一个表单,将这个类拖到您的表单上,再运行表单看看有什么结果。

四、类的注册

也许您觉得将类拖到表单上有时不太方便,那么可将类注册,然后就可以象VFP标准控件那样在表单设计器的工具栏上选择您的类了,方法如下:

  1. 请从“工具”菜单中选择“选项”;
  2. 在“选项”对话框中,选择“控件”选项卡;
  3. 选择“可视类库”并选择“添加”按钮;
  4. 在“打开”对话框中,选择要注册的类库文件并选择“打开”;

在设计表单时,在表单控件工具栏上选择“查看类”按钮 wpe1.jpg (926 字节),然后您就可以看到您注册的类库名了,如 图3 ,然后就可以使用您自己的类了。

您也可以在查看类时注册,按图3中的“添加”,再打开相应的类库文件即可。

五、类特征的继承及变异

使用自定义类产生的对象,它将继承该类所有的属性,也就是说父亲所有的特征都遗传给了儿子,并且当您修改了类的属性后,对象的属性会作相应修改。比如上面所说的fg类,我们用它做了一个表单form1,当我们改变fg类的宽度,我们再次运行或修改基于这个类的表单form1时,会发现这个表单的宽度也变了。

但儿子可以有自己的特性,即变异,也就是说这个对象产生后,可以修改它的属性,这时您再修改类的属性,儿子就不会再变了,比如上面基于fg类的表单form1,如果您修改了form1的宽度,那么再改类的宽度,它的宽度是不会变的了。

六、调用类的隐含方法程序代码

上面我们讲了,对象可以自动继承类的所有特征,当然也包括方法程序。

比如一个按钮command1,它是由一个自定义类创建的,如果我们在类的click事件写入了代码(例如thisform.release),则在command1中也有这些代码,虽然您打开它的click事件看不到这些代码(因为它们都已被封装到类之中了),但按下按钮会执行这些代码。

但在实际应用中,类的代码可能不适合我们用,我们就需要写入自己的代码,根据类的变异特性,这时类原来的代码就不起作用了。但有时候类的代码不是不适合用,而是不够用,也就是除了新的代码外,还想要原来的代码,当然您可以再写一遍,但就算您不怕麻烦,有时可能会搞不清楚类中都有些什么代码,那就麻烦大了。

有没有简单的方法调用原来的代码呢?有!使用下面这个函数:

dodefault()

例如上面哪个按钮,您可以在按钮中写入:

qd=.f.
dodefault()

那就相当于:

qd=.f.
thisform.release

假如原来的代码不是一句,而是几十句,那这个dodefault()就价值大了。

七、屏蔽基类方法程序代码

我们的自定义类都派生于某一个基类,这基类就是自定义类生成对象的爷爷。

我们前面讲过儿子变异后,父亲的特性就不再有了,但爷爷的特性仍然存在。

比如用文本框基类所做的自定义类,您可以在这个自定义类的keypress中写入一些代码,生成对象后您又可以在对象的keypress中写入代码,那么自定义类的代码就不会被执行了,但基类的代码(即隐含动作)还是会执行的,文本框的keypress隐含动作就是在文本框中显示所键入的字符,假如我们这时不想基类的代码被执行,比如不想文本框所键入的字符显示出来,我们可以在对象的keypress中加一句: nodefault() ,这样儿子也就没有爷爷的特性了。

上一篇:Foxpro 网络版软件初步
下一篇:Foxpro OLE控件

关闭窗口】【浏览次数:】【发送给好友】【收藏此页
相关文章 最新文章 热门文章

·个人SMTP服务器的配置
·通过E-mail 共享Java 对象
·你的email服务器准备好应对账号搜集攻
·Server 2003中为SNMP服务配置网络安全
·Server 2003为SMTP邮件中继服务器配置
·不花一分钱, 轻松打造自己的电子邮局
·用CMailServer打造邮件服务器
·G容量邮件服务器DIY
·Exchange 2000 Server的常见问题
·用Windows Server 2003架设小型邮件服
·系统优化 专题
·QQ密码丢失后能做的事情:快速找回密码
·最经典的黑客入门教材
·怎样查找对方的IP地址
·找回QQ密码的注意事项 
·实战系统虚拟利器——MS VPC 2004
·DMA让你的硬盘速度飞起来
·电脑初学者必备之Windows进程大全
·Dreamweaver视频教程
·让你的网速快到不可思议
评论 本站声明
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
  • 本站大部分为网络转载,如有版权问题,请通知我们,我们立即更正!

设为首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003-2005 xker.com All rights reserved. 网站合作、广告联系QQ:12231446
小新技术网 冀ICP备05002857号