VFP下树形形式数据浏览的实现
2015-04-26郭建军
郭建军
(长治学院 计算机系,山西 长治 046011)
1 问题的提出
数据和信息在计算机上进行浏览和编辑时,有多种表示形式。以可视编程环境下为例,根据对数据执行选择、编辑、输入、显示、分类设置等不同操作情形,系统提供了下拉列表框、下拉组合框、编辑框、文本框、标签、页框等控件。有了这些控件,就可根据需要来表示数据和信息。
VFP数据库管理系统与其它的可视编程环境一样,也提供了这些控件。因为数据库系统主要是处理自由表中的数据,可通过表格控件Grid显示自由表中的记录,但当自由表中的字段较多时,用表格控件Grid来显示,就显得捉襟见肘,没有层次感。在Windows操作系统下,显示磁盘、磁盘上的目录、子目录、目录下的文件等信息,是在资源管理下来完成的。以树形形式显示时,目录和文件的属性一目了然,层次清晰。
2 VFP下ActiveX控件使用
在VFP系统下,用树形形式显示自由表中的数据时,利用了对象连接与嵌入OLE(Object Linking and Embedding)方法,并通过“ActiveX控件”[1]来实现的。由于ActiveX控件是通过外部对象来扩充VFP功能的,所以在VFP下进行表单设计时,当用到ActiveX[2]控件时,用户需在表单控件活动菜单上添加后才能使用。
2.1 添加ActiveX控件
在VFP系统下,由工具菜单中的[3]“选项(O)…”打开一个对话窗口,选择控件页框,在ActiveX控件所对应的列表框内,钩选“Microsoft TreeView Control.version 6.0”,点确定关闭对话窗口后,由表单控件活动菜单上查看类按钮中的ActiveX控件选项,改变表单控件活动菜单为只显示ActiveX控件。上述操作是为用树形形式显示自由中的数据而添加的,如果需要添加其它形式的ActiveX控件,在列表框内容钩选不同的控件即可。
2.2 使用ActiveX控件
与使用VFP下的其它控件一样,选择表单控件活动菜单上相应的ActiveX控件按钮,然后在表单上拖放,即可把ActiveX控件插入到表单中。在表单中插入的ActiveX控件也有相应有控件属性,属性设置包括数据、方法程序、布局、其它四个方面,其中方法程序是设置的主要内容,也是使用ActiveX控件的关键。
3 用资源管理器形式显示记录
在VFP数据库管理系统中,自由表是管理的主要内容。如果自由表中的记录数据能用层次形式表示,通过设计合理的自由表结构,并把涉及的自由表由索引后的关键字关联起来,就可实现以树形形式显示数据,具体方法如下。
3.1 按层次形式组织自由表
例如在学生学籍管理信息系统中,学生的信息具有如下属性:系、级、专业、班级、学号、姓名、个人详细情况等,而且学号在编码时采用序码和块码结合的编码方式,与身份证号码编码相似,通过学号就可获得学生的相应属性。
(1)根据学生的属性建立自由表存放系、级、专业等内容,每个表中有两个字段,一个存放编码,另一个存放名称,并为编码字段建立索引。此处只介绍存放系名称及专业名称的自由表结构(见表1,2)。
表1 存放系名称的自由结构
表2 存放专业名称的自由表结构
为了和学生自由表建立联系,在建立自由表结构时,给编码字段建立索引,在打开自由表后,要用set order to命令重置索引。
(2)学生的编码方式。由于学生学籍的信息很多,这里只介绍学号的编码方式,其它的学籍信息按照表示数据的类型,在建立学生学籍自由表时做出相应的选择,也需给学号字段建立索引。
学号的编码为11位,从左到右依次为:第1、2位表示学院,第3位表示专业属性,第4,5位表示系,第4,5,6位合起来表示专业,第7,8位表示级,第9位表示几班,第10,11位表示学生在班中编号。例如某个学生的编号为14401111101,解释如下:14表示学院,4表示师范专业,01表示中文系,011表示汉语言文学专业,11表示11级,1表示1班,01表示该学生在该班级中排第1位。即按照学生学籍表、系名称、专业名称等层次形式组织自由表。
3.2 建立树形形式显示自由表记录的表单
在VFP下创建表单,根据学生学籍自由表中显示的学生数据,在表单上添加“Microsoft TreeView Control.version 6.0”控件,通过合理布局,为学生学籍的每一项数据绑定相应的控件。
3.2.1 为表单用到方法程序填写代码
为表单的Init方法程序填写代码,内容主要是全局变量的定义,用public命令说明表单中用的全局变量名;为表单的Unload方法程序填写代码,内容主要是关闭在不同工作区上打开的自由表,为其它表单使用自由表时,避免文件正在使用的错误出现。
3.2.2 为Microsoft TreeView Control.version 6.0控件用到的方法程序填写代码
为Microsoft TreeView Control.version 6.0控件填写代码的方法程序有:Init方法程序、Click方法程序、NodeClick方法程序。其中Init方法程序中的代码,主要是通过学生学籍自由表中的学号、系名称自由表中的系级名称、专业名称自由表中的专业名称,利用命令this.nodes.add(参数1,参数2,参数3,参数4),构造树形结构,其中的参数表明了层次关系。NodeClick方法程序中的代码,是用户浏览数据时点击树形结构的某个结点时需执行的代码,主要是控制显示某个学生的具体信息。
上述各方法程序中的代码,由于篇幅有限,这里不作详细介绍。创建好的表单运行后的结果(部分数据)如图1所示:
图1 表单运行结果
4 结束语
用树形形式显示自由表中的记录,主要是对每一条记录的编码,利用编码建立与对应信息内容的联系,在显示过程中通过编码添加相应的结点信息内容。文章只是对学籍管理信息系统中显示学生信息作了介绍,应用这种方法,通过不同的编码的方式,可对其它管理信息系统中的自由表进行相同形式的显示。
[1]台 安,胡怀瑾,李怀成.基于ActiveX组件技术的VFP在Web中的应用[J].计算机与现代化,2010,(4):99.
[2]袁 柱.Visual FoxPro程序设计教程[M].北京:人民邮电出版社,2011.211-212.
[3]Microsoft Visual FoxPro6.0程序员指南[M].北京:希望电脑公司,1998.407-418.