易学文
(黄冈职业技术学院,湖北黄冈438002)
列表框主要用于选择一组指定的数据,用户从列表中选取选项,然后执行所需的操作。VFP中的列表框ListBox控件,便于用户进行程序设计、查询、修改和运行。然而,在VFP中进行查询时,用户必须懂得查询语句的基本语法,修改查询文件或selcet语句的关键字重新定义查询,这无疑增加了使用难度。笔者在运用VFP中的列表框ListBox控件进行程序设计、查询、修改与运行的过程中,探索了VFP中的列表框ListBox控件的使用技巧,现以新生报到管理系统为例,通过增加或移去列表框控件值的方法来设置查询条件,用户使用起来会更加便捷[1]。
1.1 建立学生信息表(xsb.dbf)
学生信息表的主要内容包括录取号、考生号、姓名、性别、身份证号、民族、院系名称、录取专业、科类、省市名称、地址、中学名称、成绩等。
1.2 建立表单文件 xsbcx.scx(modify form xsbcx),表单的主要包括2个列表框(list1,list2),7个命令按钮,如图1所示。
1.3 设置事件代码
1.3.1 打开命令按钮
打开命令按钮的功能是打开任意数据表文件,并将其表结构显示在列表框list1中,如图2所示,主要事件代码如下(click事件)[1]:
图1 建立表单文件的列表框控件和命令按钮控件
clos all&&关闭当前所有数据表文件
publ f1,tj1&&定义2个全局变量,f1记录打开的数据表名,tj1记录查询条件值
f1=getfile("dbf")&&将打开类型为dbf的数据表名赋值给变量f1
if empty(f1)&&判断变量f1是否为空,即是否选择数据表文件
retu
endif
use(f1)
copy stru extend to f2&&将选择的数据表结构拷贝到临时文件f2中
use f2
scan
thisform.list1.additem(field_name)&& 将 f2表中的值添加到list1列表框中
ends
thisform.refresh
图2 选择数据表后列表框list1中显示xsb表的字段
1.3.2 单个选择命令按钮
单个选择命令按钮实现的功能是将列表框list1中的字段值,添加到列表框list2中,如图3所示,主要事件代码如下(click 事件)[2]:
if thisform.list1.listindex>0 && 判断是否选择列表框list1中的数据
thisform.list2.additem(thisform.list1.value)&&在列表框2中增加列表框1所选字段值
thisform.list1.removeitem(thisform.list1.listindex)&&列表框1删除已选择字段值
endif
图3 设置查询条件
1.3.3 单个移去命令按钮
单个移去命令按钮实现的功能是将列表框list2中的字段值,移动到列表框list1中,与单个选择命令按钮功能相反,主要事件代码如下(click事件):
if thisform.list2.listindex>0 && 判断是否选择列表2中的数据
thisform.list1.additem(thisform.list2.value)&&列表框1增加列表框2所选字段值
thisform.list2.removeitem(thisform.list2.listindex)&&列表框2删除已选择字段值
endif
1.3.4 全部选择命令按钮
全部选择命令按钮的功能是将列表框1中全部数据,添加到列表框list2中,主要事件代码如下(click事件):
for i=1 to thisform.list1.listcount
thisform.list1.listindex=1
thisform.list2.additem(thisform.list1.value)
thisform.list1.removeitem(1)
endfor
1.3.5 全部移去命令按钮
全部移去命令按钮的功能是将列表框list2中全部数据,全部移动到列表框list1中,此功能与全部选择命令按钮相反,主要事件代码如下(click事件):
for i=1 to thisform.list2.listcount
thisform.list2.listindex=1
thisform.list1.additem(thisform.list2.value)
thisform.list2.removeitem(1)
endfor
1.3.6 查询命令按钮
查询命令按钮的功能是根据用户选择的查询条件,执行查询,如图4所示,其主要事件代码如下(click 事件)[3]:
if thisform.list2.listcount=0
=messagebox("没有选择字段!",48,"警告!")
retu
endif
tj1=""
for i=1 to thisform.list2.listcount
thisform.list2.listindex=i
tj1=tj1+allt(thisform.list2.value)+","
endfor
tj1=subs(tj1,1,len(tj1)-1)
sele&tj1 from(f1)
图4 查询结果
1.3.7 退出命令按钮
退出命令按钮功能为退出当前程序,主要事件代码为(click事件):
clos all
dele file f2.dbf
release f1,tj1
release thisform
以上程序在VFP6.0中运行通过。文中介绍的列表框使用技巧是笔者在日常编程过程中探索总结的一些小技巧,通过定义命令按钮的事件代码,设置列表框的属性值,能够完成不同条件的查询要求,方便用户解决实际问题。
[1]Microsoft Corporation.希望图书创作室译.Microsoft Visual FoxPro6.0中文版语言参考手册[M].1999.
[2]罗颂,詹斌,余健.Visual FoxPro 6.0 课程设计案例精编[M].清华大学出版社,2008.
[3]史济民,汤观全.Visual Foxpro及其应用系统开发[M].清华大学出版社,2000.