2024年3月29日发(作者:)
维普资讯
大理学院学报
第5奄第6期2OO6年6月
JOURNAI.OF DglJ UNIVERSr『Y
Vo1.5 No.6 Jun.20o6
Visual FoxPro 6.0中类及其应用实例
黄和飞。赵榆琴
(大理学院数学与计算机学院硬件教研室,云南大理671003)
[摘要]介绍Visual FoxPro 6.0中类的概念、特性及具体应用。并给出了用Visual FoxPro6.0类设计器设计
一
具体可视化类的方法和步骤。
[关键词】面向对象;类;子类;对象;事件;属性
[中图分类号]TP31 1.51 [文献标识码]A [文章编号]1672-2345(2006)06-0004—04
Class of Visual FoxPro 6.0 and Its Real Examples of the Usage
HUANG He-fei,ZHAO Yu-qin
(Department of Mathematics and Computer,Dali University,Dali,Yunnan 671003,China)
[Abstract] In this paper,The concepts, speciality and concrete application of “Class of Visual FoxPro 6.0” were
expatiated in details.And.we puts some methods and steps about visual subclass of speciifc design with class designer of
visual foxpro 6.0.
[Key words]object—oriented;class;subclsa;object;incident;property
程序设计人员在使用Visual FoxPro 6.0进行面 类就可以生成这类对象中的任何一个对象。这些对
向对象的程序设计时,主要考虑如何创建对象,利
象虽然采用相同的属性来表示状态,但它们在属性
用对象来简化程序设计,提供代码的可重用性。其
上的取值完全可以不同。这些对象一般有着不同的
实,面向对象程序设计基本上就是一种代码封装,
状态,且彼此间相对独立[Ij。
代码可以重用而且维护起来很容易。其中最主要的
2认识Visual FoxPro中的类
包装概念被称为类。作为一个面向对象程序设计人
Visual FoxPro的类同样具有以上特性。Visual
员来说,能否熟练掌握和应用类尤其显得重要。但
FoxPro的类主要有即容器类和控件类两大类型,因
是对于一个初学者来说,类的概念和使用也是相对
此Visual FoxPm对象也分为这两种类型。容器类
比较晦涩的。
可以包含其他对象,并且允许访问这些对象。控件
1 类的介绍
类的封装比容器类更为严密,但也因此丧失了一些
类和对象关系密切,但并不相同。类具有封装
灵活性。
性和继承性,类是对一类相似对象的性质描述,这
Visual FoxPro的.VCX可视类库位于\Ffc\文
些对象具有相同的性质:相同种类的属性以及方
件夹,包含了各种基本类,使用这些基本类可以不
法。类好比是一类对象的模板,有了类定义后,基于
通过编程或较少的编程即能改进Visual FoxPm应
[收稿日期】2006-03-29
[作者简介]黄和飞(1980-),男,云南曲靖人.助教,主要从事计算机应用研究
4
维普资讯
觚30曩 奠和 ,赵麓琴Visual FoxPro 6.呻觳其酮实伤 幕50
用程序。用户可以自由地将基本类和其应用程序一
起发布。我们也可以在“类设计器”或“类浏览器”
中打开一个基本类,查看其结构和代码。这是一种
极好的方法,不但可以更深入理解Visual FoxPro
编程,还可以理解基本类的工作机理。
3决定什么情况下创建类
在很多情况下都可以使用类。通过精心的计
划,您可以有效地决定应该设计哪些类,以及在类
中应该包含哪些功能。比如,可为使用过的每个控
件和每个表单创建一个类,但显然,这不是设计应
用程序最有效的方法。这样做的后果是很多类做同
样的事情,却必须分别维护它们。一般以下两种情
况可以考虑使用类。
3.1封装通用功能为通用的功能创建控件类。
3.2赋予应用程序统一的外观和风格创建外观
独特的表单集类、表单类和控件类,可以使应用程
序的所有组件具有相同的风格。
4自定义类的创建及应用实例
例如,在一个较为安全的应用程序中,通常一
个用户进入系统前,必须通过系统登录的身份认证
后才能进入主程序界面。系统登录界面主要实现两
个功能:①确认用户的身份及使用权限。②对系统
信息起到保密作用【2】。
下面结合此例对类的创建及使用过程作了详
细介绍。
4.1打开类设计器在“项目管理器”中选择
“类”选项卡并选择“新建”,在接着出现的“新
类”对话框中,指定新类的名称为sysAdmin、新类基
于的基类为Form基类(可视容器类),以及将它存
储于当前目录下自定义类库d:ksysAdmin.VCX中。单
击“确定”按钮出现类设计器。
4.2类设计器的操作类设计器的界面与表单设
计器相同,在属性窗口中可以查看和编辑类的属
性,在代码窗口中可以编写各种事件和方法程序的
代码,如果创建的新类基于包容控件类或容器类,
可以向它添加新控件。为新类添加的属性和方法程
序属于新类而不是属于新类中的单个控件。
利用类设计器中的“表单控件”:【具栏中相应
控件添加一个Combo控件、一个Text控件、2个Label
控件、2// ̄Command控件、一个Image控件及几个Line
控件,将它们拖到类设计器中并调整好它们的位置
和大小,并相应设置各控件属性见图l。
图l控件布局图
主要控件属性见表l。
表l主要控件属性设置参考表
向新类添加属性及方法程序,可从“类”菜单
选择“新建属性”或“新建方法程序”添加即可(本
例中未使用)。
为各控件设计事件代码如下:
①表单的Init事件代码如下:
定义全局变量manager用于存放当前操作员姓
名
定义全局变量ca用于存放输入操作员姓名和
密码的次数
public cn,manager
cn=O
②“确定”按钮的Click事件代码如下:
单击“确定”按钮,系统将判断操作员和密码
是否正确。如果操作员或密码不正确,将提示重新
输入,三次后仍不正确,系统将自动退出。否则将调
用下个表单。
manager=alltrim(thisform.eombo1.value)
USe“
.
\database\tabadmin”&&打开存放用户
名和密码的表
获得输入信息
cname=alltrim(thisform.Combo 1.value)
ppassword=alltrim(thisform.text 1.value)
5
维普资讯
毫幕30啊自然科学
set order to操作员姓名
if empty(操作员姓名)
manage ̄--alhrim(thisform.combo1.displayvalue)
do form“.kformkfdesktop” &&调人通过验
证要运行的表单
thisform.release
else
seek cname
est exact on
判断操作员是否正确
if alltrim(TabAdmin.操作员姓名)!=cname
cn=cn+1
cMessagetitle=‘系统登录’
cMessagetext=‘操作员错误,请重新输人!’
nDialogtype--4+32
nanswer=messagebox(cmessagetext,ndialogtype,
cmessagetitle)
do case
case nanawer=-6
thisform.combo1.value=”
thisfoliB.combo 1.seffocus
case nanswer=-7
messagebox(’非法用户!’,48,’系统
登录’)
thisform.release
endcase
if cn=3
thisofliB.erlease
endif
else ,
判断密码是否正确
if alhrim(TabAdmin.密码)!=ppassword
on=on+1
cmessagetith=’系统登录’
cmessagetext=’密码错误,请重新输
入!’
ndialogtype=4+32
nanswer=messagebox(cmessagetext,
6
大理学院学报
ndialogtype,cmessagetitle)
do case
case nanswer=-6
thisform.text1.value=’’
thisform.text1.estfocus
case nanswer=-7
messagebox(’非法操作!’,
48,’系统登录’)
thisform.erlease
endcase
if cn=3
thisform.release
endif
else
manage ̄-alltrim(thisform.eombo1.disphyvalue)
do form“.kformkfdesktop’’
thisform.release
endif
endif
endif
set exact off
③“取消”按钮的Click事件代码在此略过。
完成以上操作后保存在sysAdmin.VCX类库中
即可。如果想对设计的类给予一些附属注释,可以
从“类类信息…”菜单打开“类信息”对话框,选择
喜爱的容器图标或者对类进行说明。之后,关闭类
设计器窗口。
4-3 自定义类的使用 在使用表单设计器进行表
单设计时,表单控件工具栏只显示Visual FoxPro内
建的类,而不是自定义的类。如果要让一个类库在
表单设计期间都可使用,必须注册这个类库。选择
“工具链项”菜单项,然后选择对话框中的“控件”
页。接着选择“可选类库”选项按钮,并用“添加”
命令按钮将自定义的类库文件加入到“选定”列表
框中。单击“设置为默认值”命令按钮后再单击“确
定”命令按钮关闭对话框。见图2。
维普资讯
豆第30捆 黄和_6。赵麓琴Visual FoxPm 6.呻类厦其应用实傍 第5誊
图2类库注册图
在注册了一个类库后,表单控件工具栏还只显
示内建的类。但这时,只要单击表单控件工具栏上
的“查看类”图标按钮,在下拉菜单中选择想要的
类库,就可以使此工具栏转到已注册过的类库上。
我们就可以像使用常用的控件类一样来使用自己
定义的类了,见图3。
图3 自定义类库的使用图
将表单控件工具栏中我们设置的可视的自定
义类sysadmin的图标作为类的对象添加到项目中的
登录表单中即可,运行效果见图4。
图4对象的运行图
除此之外,因为我们上面创建的类是基于Form
基类创建的,所以除了可以通过传统的表单控件工
具栏来使用。还可以将我们创建的类设置为表单模
板来自动创建一个表单。具体设置为:从系统的“工
具链项”菜单打开“选项”对话框,选择“表单”页;
选择“表单模板”复选框,这时系统显示一个“表单
模板”对话框,在对话框中输人要作为模板的类库
文件,并指定一个表单类;单击对话框中的“确定”
命令按钮,完成设置。经过这样的设置后,下次打开
表单设计器时,系统将以设置的表单模板来自动创
建一个表单。
5对类特性的体会
在表单中创建了一个基于用户自定义类的对
象后,对象的各个控件事件代码窗口中并无任何一
行程序代码,这是因为在面向对象程序设计中,类
的代码虽然隐蔽了,但是类的对象完全继承了父类
的所有方法和事件程序。这是类的特性所决定的。
对于基于类创建的对象,当类的属性被修改以
后,这些修改会自动反映到类的对象中。但是如果
在创建的对象中,修改了属性的默认值,那么即使
以后修改了父类中的该项属性,也不会影响对象中
的属性。同属性的继承类似,如果在类的对象中不
输人事件和方法的过程代码,那么当对象的事件被
触发或方法被调用时,就会自动在父类中寻找相应
的过程代码,如有就被执行。但如果在对象的事件
或方法中输入了过程代码,那么就只执行对象中的
过程代码,而不执行父类中的相应代码。当然也可
以通过一些设置使对象在运行时既执行父类的事
件、方法程序,又执行对象的。在本文例子中,在“确
定”按钮Click事件中存放用户名、密码的表的定位
及验证通过后要执行的表单的定位,根据笔者经
验,最好根据自己的需要在类设计器中进行修改较
好。
[参考文献]
[1]微软(中国)有限公司译.Microsoft Corporation.Visual
FoxPro 6.0中文版程序员指南[M].北京:北京希望电
脑公司,1998.
[2]王晶莹,王国辉,张雨.、isua[Foxpro数据库开发实例
解析[M].北京:机械工业出版社.2004.172—175.
7


发布评论