二级辅导:VisualFoxpro类计算机二级考试

文章作者 100test 发表时间 2009:07:25 10:45:38
来源 100Test.Com百考试题网


  类又是个东西?会不会理解起来很累?
  其实很简单,我们在编一个程序时,一般一种对象会很多次用到,比如表单,这些indowtype属性都为“1-模式”,表单中都有“确定”和“取消”两个按钮,按钮中都有“thisform.release”这样的语句等等。在以前我们每新建一个表单都需要去设置这些属性及控件,十分麻烦,那么有没有办法建一个具有这些共同特性的表单,在需要时调用,共同的部分就不需要设置了,只需设置那些独特的部分。
  “类”就是专门干这事的,之所以叫类,就是因为它有一些共同特性,代表了一类对象,就好象模板一样,我们可以根据需要建立各种各样的类,并将它们保存起来,以供以后调用,这样就可以省去很多麻烦。下面我们就来讲怎样建立一个类,就以上面所说的那个例子为例。
  一、建立一个类
  在项目管理器上选择“类”页面;
  按“新建;
  在“类名”中输入您为这个类所起的名称(比如gf),在“派生于”中选择这个类是从那一类对象(基类)中生成的(在此是form),考试#大提示在“存储于”输入一个文件名,即将此类存储于那个文件中(比如myclass,该文件的扩展名是vcx,叫类库);
  提示
  一个类库文件可以存储多个类,因此您也可以选择某一个已有的类库文件,将此类存储在里面。
  按“确定”进入类设计器,就象表单设计器一样,然后您就可以象设计一个普通表单一样设计这个类;
  设计好后,存盘、关闭,这样一个类就设计好了。
  二、调用一个类
  对于一般控件做的类,调用非常简单,进入表单设计器,然后在项目管理器中选择所需要的类,用鼠标将其拖入到相应的表单上即可。
  如果是表单类,则稍微麻烦些,当您把一个表单类拖入到表单设计器时,因为设计器中已经有一个表单了,这时系统会提示您建一个表单集,按“是”,然后再用“表单/移除表单集”将表单集取消。
  三、做一个稍微复杂的类
  进入项目管理器的类页面,按“新建”,类名和文件名您自己定,“派生于”选“container”,即容器,其borderwidth属性设为0;
  在左上角放一个文本框,属性设置为: top 0 left 0 height 25 width 97 specialeffect 1-平面 fontsize 15 fontbold .T.-真 disabledforecolor 0,0,0 (黑色) alignment 2-中间
  再在容器的左上角放一个“计时器”控件,其interval属性设为1000,timer事件中写入如下语句: this.parent.text1.value=time()
  将容器调到与文本框大小一样。
  存盘退出。
  知道是什么了吗?还不知道?那就新建一个表单,将这个类拖到您的表单上,再运行表单看看有什么结果。
  四、类的注册
  也许您觉得将类拖到表单上有时不太方便,那么可将类注册,然后就可以象VFP标准控件那样在表单设计器的工具栏上选择您的类了,方法如下:
  请从“工具”菜单中选择“选项”;
  在“选项”对话框中,选择“控件”选项卡;
  选择“可视类库”并选择“添加”按钮;
  在“打开”对话框中,选择要注册的类库文件并选择“打开”;
  在设计表单时,在表单控件工具栏上选择“查看类”按钮 ,然后您就可以看到您注册的类库名了,然后就可以使用您自己的类了。
  您也可以在查看类时注册,按图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() ,这样儿子也就没有爷爷的特性了。

相关文章


二级考试VF辅导:粘贴VFP顶层表单计算机二级考试
Foxpro:在VFP中制做异型窗口计算机二级考试
运用VisualFoxPro地ProgressBar控件计算机二级考试
运用VisualFoxPro地CommonDialogs控件计算机二级考试
二级辅导:VisualFoxpro类计算机二级考试
VisualFoxpro数组地运用计算机二级考试
VisualFoxpro宏替换地运用计算机二级考试
VisualFoxpro配置文件计算机二级考试
利用VFP在INTERNET上制作数据库动态查询计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛