用VisualFoxPro5.0设计数据文件结构浏览器
用VFP编程的时候,不可避免的会涉及到数据表和自由表本身的操作。比如我们至少在任何时候都需要知道这些数据表的结构。虽然这些数据表都是我们自己设计的,但是如果文件比较多,花的时间比较长,完全有可能记不清楚,尤其是在分析别人的程序的时候。
这个问题尤为突出。为此,我们可以设计一个程序来解决这个问题。由于这类程序不依赖于特定的环境,具有很强的独立性和灵活性,我们有必要将其设计为自定义类,一次性使用:
1.创建新类
打开“文件/新建”.../Class”,类名为list_stru,由“Container”派生而来。在“存储在...”中选择适当的目录保存此自定义类。然后点击“确定”。
2.设置自定义类list_stru
的属性。进入类设计器后,设置容器的属性:BackStyle为0(透明),BorderWidth为2,2,SpecialEffect为0(凹)。
3.设置用于显示文件名的列表框对象(list1)
添加一个名为list 1的列表对象,用于选择要显示结构的数据表的文件名。
然后设置对象的一些属性如下:
(1)row source type = 7(file)
即对象的内容来自磁盘文件。
(2)RowSource=*。DBF
只显示后缀为DBF的文件。
(3)编写list1中的项目被选中时会发生的代码,这可以通过InteractiveChange事件来实现:
Interactive Change事件
Local Curpath & &定义一个变量
curpath=this.list(2) &&返回选中文件的路径
Set defa为(curpath) &&指定默认路径
如果不是. '['$this.value &&如果选中的项目是一个目录(即包含'['字符), 不会执行下列操作
Use(this . value)
this . parent . list 2 . row source type = 0
this . parent . list 2 . clear this . parent . list 2 . row source type = 8
this . parent . list 2 . row source = SUBSTR(this . value,1,len(this . value)-4)& &使用SUBSTR函数获取完整的文件名
this . parent . list 2 . listindex = 1
下面简单介绍一下程序:
a .将LIST对象的RowSourceType属性设置为7 (file)。显示磁盘文件时,第一列是驱动器号,第二列是驱动器号和路径。因此,需要使用this.list(2)返回完整的文件路径,然后使用Set defa to (curpath)转换到相应的路径。注意,curpath在这里必须用名称表达式()括起来,相当于宏替换&,下面的use (this.value)语句也是这个意思。
B.在操作过程中,我们可能需要不断地选择文件名并在list2中显示其结构,所以我们需要不断地更新list2的RowSource内容。这是通过this.parent.list2.clear实现的,但是在使用clear方法之前,RowSourceType属性必须设置为0(无),否则是无效操作。清除内容后,将RowSourceType属性设置为8(结构)。
C.设置RowSourceType属性后,使用RowSource属性定义对应的源文件名,即substr (this.value,1,len (this.value)-4)语句。
4.添加一个列表框对象(LIST2)来显示文件结构。
添加一个名为LIST2的列表框对象以显示文件结构,但不需要设置其属性,因为其RowSourceType和RowSource属性已经在LIST1的InteractiveChange事件中定义。
最后,我们添加相应的描述性标签对象和其他适当的形状对象来美化界面,保存它们,这个类就可以使用了。此外,上述程序还包括文件操作和列表框(组合框)对象的一些关键用法。如果能灵活运用,对以后的程序设计会有很大的帮助。
位律师回复
0条评论