10.2.2 子类的创建
创建子类的方法有两种:类设计器和代码。这里仅讲解用类设计器设计类的方法。
一、类库及其使用
1.类库
每一个以可视方式设计的类都存储在一个类库中。类库具有.VCX文件扩展名。
2.创建类库的方法
可以用3种方法创建类库:
①在创建类时,请在新类对话框的“存储于”框中指定一个新的类库文件。新类对话框如图10-4所示。
图10-4 “新建类”对话框
②使用CREATE CLASS命令,同时指定新建类库的名称。例如,下面的语句创建了一个名为myclass的新类和一个名为new_lib的新类库:
Create Class myclass Of new_lib AS Custom
③使用Create Casslib命令。例如,在命令窗口键入下面的命令,可以创建一个名为new_lib的类:
Create Classlib new_lib
3.类库的维护
类库维护通常涉及到3项任务:复制、编辑和删除类库中的类。
(1)复制类库中的类
把类库添入项目后,您可以很容易地将类从一个类库复制到另一个类库。
若要将类从一个类库复制到另一个类库,可按下面的步骤进行:
①确保两个类库都在项目中(不一定是同一个项目)。
②在项目管理器中,选择“类”选项卡。
③单击包含类的类库左边的加号。
④将类从旧库中拖到新库中。
可以将类和基于这个类的所有子类都包含在一个类库中。如果一个类包含多个不同类库中的元件,那么在运行或设计时,最初加载这个类时将花费较长的时间,因为包含类元件的类库必须全部打开。
(2)删除类库中的类
若要从库中删除一个类,只能通过项目管理器。请在项目管理器中选择这个需要删除的无用的类并选择“移去”按钮即可从可视类库中清除无用的。也可使用命令REMOVE CLASS来删除无用的类。
(3)编辑类库中的类
编辑一存在的类,可使用如下方法:
①通过“文件”菜单打开可视类库。在选定类库后,系统将显示图10-5所示“打开”对话框,用户可从中选择要编辑的类。双击类名列所要修改的类,系统将打开类设计器。
图10-5 打开类库对话框
②通过项目管理器首先加入类库,然后打开类库列表,双击所要修改的类即可打开类设计器。
用户可以通过选择“工具/类浏览器”选项来打开类浏览器窗口(参见图10-6)。
用户还可通过该窗口上方的工具栏查看类对象成员、类属性、类方法和类代码,以及重定义类(更改选定类的父类)、重命名类、删除类和创建某个已存在的类的子类。
图10-6 类浏览器
二、创建子类
1.一般步骤
使用类设计器创建类时,需要对新类的基类进行说明,指明类库的名称、对于新建的类的说明等。在类设计器中创建的类,可以在“类设计器”中设置每个对象的外观。
用类设计器创建新类的操作步骤如下:
①从“项目管理器”选择“类”选项卡。
②按“新建”按钮。
③在“新类”对话框中的“类名”框中输入类名。
④在“新类”对话框中的“派生于”框中输入/选择基类名。
⑤在“新类”对话框中的“存储于”框中输入类库名。
⑥在“新类”对话框中按“确定”,如图10-7所示。
图10-7 “新建类”对话框
⑦这时会出现如图10-8所示的类设计器。
图10-8 类设计器
说明:“类设计器”和“表单设计器”类似,您可以在“属性”窗口中观看、编辑类的属性,用“代码窗口”编辑事件和方法的代码,用“表单控件”工具栏可以向“容器”中添加控件。
⑧关闭“类设计器”。
2.为类添加对象
创建的新类,如果是控件类或容器类,则可以向它添加对象(控件或容器)。首先必须打开“类设计器”窗口,再从“表单控件”工具栏中选择所要添加的对象的按钮,将它拖到“类设计器”中,调整对象的大小,使其满足要求。可以通过主菜单中“类”菜单项中的“新属性”和“新方法程序”命令为新类设置属性和编写方法程序的代码。也可以单击鼠标右键,从弹出的快捷菜单中选择“属性”命令和“属性”窗口中的“方法程序”命令,为新类设置属性和添加方法程序。
3.为类添加新属性和新方法程序
对于新创建的类,继承了父类的属性和方法程序。同时,用户还可以为其添加新的属性和新方法程序。VFP对于一个类所拥有的属性的数量不作限制,但添加的属性和方法必须有实际的意义,否则就没有必要添加。
(1)添加新属性
①打开“类设计器”,VFP主菜单栏中将出现“类”菜单选择项,选择“类”菜单下的“新建属性”。
②在弹出的“新建属性”对话框中,作如下操作:
a.在“名称”栏内,输入属性的名称。
b.在“可视性”栏内,指出可视性:公共、保护或隐藏。
c.在说明栏内,填入有关属性的说明。
因为在用户设置新属性时,有可能输入一些无效的设置,而造成运行时出错,在“说明”中增加属性的设置的说明,以便其他用户和用户本身在引用该属性的代码中,检验属性的有效性。
d.单击“添加”按钮后,新的属性就被添加到类中。
新建属性对话框如图10-9所示。
图10-9 “新建属性”对话框
(2)指定属性的默认值
创建了新属性以后,用户通常要为属性指定一个默认值。如果用户能指定默认值,VFP默认其属性为“假”(.F.)
指定属性的默认值,操作如下:
①在“类设计器”的控件上单击鼠标右键,在弹出的快捷菜单中选择“属性”,再在属性窗口中选择“其他”选项卡。
②单击该属性栏,在“属性值”中输入需要设置的值。
③以后在把该类添加到表单或表单集中时,该值作为该对象的属性设置。
注意:若要设置的属性默认值这空字符串,可用鼠标单击属性名,在“属性”值框中删除原来的默认值。
VFP系统不仅能为新类添加新属性,而且还可以为VFP的基类添加新的属性和重新设置基类的属性默认值。操作方法同为新类添加新属性的操作方法类似。当一个基类被添加了新属性或基类改变了默认值以后,基于这个类的对象添加到表单中时,对象将反映被修改和添加属性后的属性设置,而不是VFP某个基类原有的属性设置。
(3)为属性创建Access和Assign方法程序
在“新建属性”对话框中,选择“Access方法程序”复选框可为该属性创建一个Access方法程序,选择“Assign方法程序”复选框可为该属性创建一个Assign方法程序。
Access方法程序是指在查询属性值时执行的代码。查询的方式一般是:使用对象引用中的属性,将属性值存储到变量中,或使用问号(?)命令显示属性值。
Assign方法程序是指更改属性值执行的代码。更改属性值一般用Store或“=”命令赋新值。
如图10-9所示的“新建属性”对话框中,选择“Access方法程序”复选框或“Assign方法程序”复选框,并确定后,在类的属性窗口中可以看到响应的方法程序。例如,为类新建一个名为“sqkprop”的属性,并选择了“Access方法程序”复选框后,在该类的属性窗口中,除了可以看到“sqkprop”名外,还可以看到“sqkprop_Access”方法程序,如图10-10所示。
图10-10 类“属性”窗口中的Access和Assign方法程序
(4)创建数组属性
可以在“新建属性”对话框的“名称”框中指定数组名称和数组的行列大小。例如,创建一个5行2列的,名称为sqkarray的数组,在“名称”框中输入如下内容:
sqkarrary[5,2]
设计时数组为只读的,在“属性”窗口中“斜体”显示,但在运行时,可以被修改或重新声明。
(5)添加新方法程序
与向类添加新的属性一样,也可以向类添加新的方法程序。方法程序所保存的是要调用时可以运行的进程代码。
添加新方法程序和添加新属性的操作相似。
首先打开“类设计器”,然后选择VFP主菜单中的“类”菜单下的“新方法程序”,在弹出的“新方法程序”对话框中作如下操作:
①在“名称”栏内,输入方法程序的名称。
②在“可视性”栏内,指定右视性值:公共、保护、隐藏。
③在“说明”栏内,可以加入有关方法程序的说明。
④按下“添加”按钮,新的方法程序将被添加到类中。
注意:类的属性和方法不能赋予同一个名字,已被使用过和属性名或方法名不能再作为新的属性名或方法程序名。
“新属性”和“新方法程序”对话框中的“可视性”,框中有3个选择项:公共、保护和隐藏。其中,“公共”是默认值,其含义是可在对象设计时进行修改。若属性和方法程序设置为“保护”,则仅能被该类定义内的方法程序或该类的派生类(子类)所访问,在由其产生的对象的属性中,该属性的值用斜体表示。若属性和方法程序设置为“隐藏”,则只能被该类的定义内成员所访问,该类的子类不能引用它们。
为确保设计时所拥有的正确功能,防止用户使用编程时随意改变属性或从类外调用方法程序,可以将类的属性和方法程序设置为隐藏。
三、创建自定义类
我们可以通过对VFP中的基类进行扩展创建新类,但是有时还需要创建具有自己独特功能或风格的类,这时就需要创建自定义类。
要创建用户自定义类,有3种方法:一是通过选择文件菜单中的“新建”按钮,然后在“新建”对话框中选择文件类型为“类”;二是在项目管理器中选择类库项后,单击项目管理器中的“新建”按钮;第三种创建新类的方法是在表单设计器中将表单或选定对象或对象组另存为类。
1.用类设计器
对于前两种方法,系统都是激活类设计器,用它来设计类。系统均会显示“新建类”对话框(参见图10-11)。
图10-11 “新建类”对话框
通过该对话框,用户可选择派生类“Custom”,以及将生成的新类存储到的类库文件(类库文件的扩展名为.VCX,如该文件不存在,系统将自动创建之)。
当用户选择了派生类库、派生类、存储新类的类库并输入了用于新类名后,单击确定按钮,系统将显示图10-12所示类设计器画面。
图10-12 创建自定义类
新类的属性、事件代码的修改方法与用户在表单中修改对象属性、事件和方法,以及新增属性与方法的步骤完全相同。当用户完成对新类的修改后,可通过选择“类”菜单中的“类信息”选项来打开“类信息”对话框(参见图10-13)。
图10-13 “类信息”对话框
2.在设计表单时另存为类
在创建表单、表单集的过程中,将其设计的表单、表单集以及表单中的控件作为一个新类保存在类库中。
在表单、表单集以及表单中的控件设计过程完成后,VFP主菜单中的“文件”菜单下的“另存为类”选项,将弹出“另存为类“对话框,如图10-14所示。
图10-14 “另存为类”对话框
在“另存为类”对话框的保存栏下有“选定控件”、“当前表单”、“整个表单集”3个单选按钮。如果用户未选中表单中的控件,则“选定控件”不可选:如果用户创建的不是表单集,则“整个表单集”不可选;否则3项都是可选项。
在“另存为类”对话框中,可完成以下工作:
(1)在“类名”栏内输入新类的名称。
(2)在“文件”栏内输入新类指定类库名。
(3)可以在“说明”栏内为新类作一简单的解释说明。
在单击“确定”按钮后,被指定的对象(表单、表单集以及表单中的控件)被保存为一个新类,并存在为其指定的类库中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。