《Visual Basic程序设计 龚为琨 第7章 文件系统控件、公共对话框》由会员分享,可在线阅读,更多相关《Visual Basic程序设计 龚为琨 第7章 文件系统控件、公共对话框(113页珍藏版)》请在金锄头文库上搜索。
1、第7章 文件系统控件、公共对话框,7.1 文件系统控件应用举例 7.2 文件系统控件属性 7.3 传统的文件处理方法 7.4 新型FSO模型处理文件介绍 7.5 通用对话框 7.6 通用对话框的应用举例 7.7 小结 7.8 练习题 7.9 上机实习题,7.1 文件系统控件应用举例,VB 6.0对于文件的处理提供了文件系统控件。与文件系统有关的控件有三个,它们分别是驱动器列表框控件、目录列表框控件和文件列表框控件。它们是相互独立的,分别完成磁盘、目录和文件的控制。,每种文件控件与标准列表框控件类似地工作。文件列表框显示文件的列表,用户可以使用鼠标或键盘从列表中选择一个文件。目录列表框显示每个驱
2、动器上可用的目录。使用驱动器列表框,用户可以指定任何可用的驱动器。 文件控件提供了在许多Windows应用程序中常用的界面,图7-1是Word软件下的打开文件的对话框。使用文件控件,可以相对容易、灵活地建立这样的对话框。,图7-1 Word下提供的打开文件对话框,图7-2 没有设置关联的各个文件,系统控件的运行效果运行文件列表框控件后,每一个控件都会自动从操作系统取得与它相关的信息。驱动器列表框控件会取得目前系统上的所有磁盘驱动器的信息;目录列表框控件会取得当前状态的目录信息;文件列表框控件会取得当前目录下的所有文件。 由于这三个控件是相互独立的,因此,当用户改变了其中的一些项目时,相关内容不
3、会自动改变。比如图7-2显示的就是D磁盘的盘符,C磁盘的Windows文件夹,而文件名显示的却是C磁盘vb-7文件夹下的内容。要想获得Windows下对话框的“连动”效果,还得进行相关的属性设置。,7.2 文件系统控件属性,文件系统控件同其他标准控件一样,有很多共有的属性,包括位置、颜色等的设置。在这里,我们重点介绍文件系统控件特有的一些属性。,图7-3 驱动器列表框,7.2.1 驱动器列表框控件 驱动器列表框控件是一个下拉列表框,含有系统上可用的所有驱动器的名字和卷标。该控件首先只显示当前驱动器,当用户单击向下箭头时,驱动器列表框出现,如图7-3所示。 用户可以在运行阶段通过设置驱动器列表框
4、的“Drive”属性来改变当前的磁盘驱动器。 注意:该属性是无法在设计阶段改变的。,例如,Drive1.Drive=e就是将缺省名为Drive1的驱动器列表框的逻辑磁盘位置改为E盘。 也可以用命令ChDrive drive 完成。用语句 ChDrive e 同样能达到以上效果。 “drive”参数是一个字符串表达式,它指定一个存在的驱动器。如果使用零长度的字符串(“),则当前的驱动器将不会改变。如果“drive”参数中有多个字符,则ChDrive只会使用首字母。,图7-4 一个目录列表框,7.2.2 目录列表框控件 目录列表框控件用来显示当前驱动器上的目录和路径。图7-4就是一个简单的目录列表
5、框。使用目录列表框,用户可以浏览目录和选择目录。如果处于某个目录中,则文件夹图标为打开,而对于当前目录下的子目录,文件夹图标是关闭的。 缺省情况下,目录列表框只能显示当前磁盘的文件夹。要显示其他磁盘驱动器上的目录,可以通过设置Path属性来完成。如果没有指定驱动器,则ChDir在当前的驱动器上改变缺省目录或文件夹。当然,也可以用命令ChDir来执行。设置如下:,Dir1.Path=C:Windows 将当前目录设为C:Windows ChDir “D:Tmp“ 将当前目录设为 D:Tmp ChDir Dir1.Path 将用户选取的目录设为当前目录 目录列表框的Path属性同样无法在设计阶段改
6、变。如果要让目录列表的内容与磁盘驱动器列表同步的话,可以在磁盘驱动器列表的Change事件过程中,将磁盘驱动器列表的Drive属性指定给目录列表的Path属性,写成“Dir1.Path=Drive1.Drive“。,7.2.3 文件列表框控件 文件列表框控件可以显示当前目录下的所有文件,常用来选择一个或一组文件。图7-5显示了一个单独的文件列表。文件列表的当前目录记录在Path属性中。可以看出,单独的文件列表应用很不方便,在通常情况下,文件列表的内容应随着目录列表的改变而改变。 当文件列表的Path属性被重新设置后,会引发Dir1_Change事件,因此我们常将Path属性设置成语句“File
7、1.Path=Dir1.Path“。,图7-5 一个单独的文件列表,表7-1 文件列表框控件的部分属性,图7-6 实用的文件控件使用例题,设置List、ListCount和ListIndex属性,就可以访问列表中的项目。用户可以查阅有关它们的属性设置。如果需要显示DirListBox和FileListBox控件,那么可以编写代码,使它们彼此之间同步。 下面这个程序把这几个属性和控件结合使用,图7-6就完成了这样效果。在设置了窗口控件后,它的程序代码如下:,Private Sub Drive1_Change() Dir1.Path = Drive1.Drive 设置目录选项 End Sub Pr
8、ivate Sub Dir1_Change() File1.Path = Dir1.Path 设置文件选项 End Sub Private Sub File1_DblClick() 双击文件,判断是否有“”,如果Dir1.Path是根目录,那么路径字符串的最后会包含一个“”;否则,路径字符串的尾部需加“” If Right$(Dir1.Path, 1) = “ Then fname$ = Dir1.Path + File1.FileName Else fname$ = Dir1.Path + “ + File1.FileName End If,rv = Shell(fname$, 1) 鼠标选
9、定文件,双击确定,用Shell调用所选的文件 End Sub Private Sub File1_KeyPress(KeyAscii As Integer) fname$ = Dir1.Path + “ + File1.FileName 所选的文件名 If KeyAscii = 13 Then rv = Shell(fname$, 1) 用键盘选择文件,回车符确定 End Sub,7.3 传统的文件处理方法,在VB的早期版本中,文件处理都是通过使用Open语句以及其他相关的语句和函数来实现的。这些机制将逐步被淘汰,新版VB提供了新工具:File System Object(FSO)对象模型。
10、但是VB新版中仍然支持传统的文件处理方式。,传统的文件处理按数据的存取方式,可分为顺序文件、随机文件和二进制文件。 顺序文件就是将文件记录按顺序存放。要读写文件的内容,就必须按照顺序依次读写。就像使用录音机的磁带一样,要想听后面的内容,必须先绕过前面的一段。一般适用于连续的文本文件。,随机文件将文件记录按照链接的方法进行存放,通过指针连接各条记录。读写文件可以像激光唱片一样直接指到记录位置,进行快速选取。一般适用于记录大小相同的文件。 二进制文件是“二进制字节”的集合,数据以二进制格式保存,适用于读写任意有结构的文件。这类文件的灵活性较大,但是程序的编制比较复杂。,7.3.1 顺序文件的操作
11、顺序文件主要适用于文本文件的运行。主要的操作有文件打开、文件读取、文件写入和文件关闭等。要编辑一个文件,须首先把文件按照一定的方式打开(或建立),将记录内容读入到内存变量中,对数据进行处理后,再将其回写到文件中,最后关闭文件。,1) 顺序文件的打开 文件的打开使用Open语句,它的语法是: Open文件名For模式As 文件号Len =缓存区长度,当打开顺序文件作为 Input 时,该文件必须已经存在,否则,会产生一个错误。然而,当打开一个不存在的文件作为 Output 或 Append 时,Open语句会首先创建该文件,然后再打开它。当在文件与程序之间拷贝数据时,选项Len参数指定缓冲区的字
12、符数。在打开一个文件进行Input、Output 或 Append操作以后,为其他类型的操作重新打开它之前必须先使用Close语句关闭它。 比如,我们输入数据,用顺序文件方式打开一个C盘根目录下的文件Lx.txt,可以写成: Open C:lx.txt For Input As #1,2) 顺序文件的读取 要读取顺序文件,首先须用Input方式打开文件,然后用读取语句将文件读入到内存变量中。读取语句的格式: Input#文件号,变量名表,3) 顺序文件的写入和关闭 要将数据写入文件,应用OutPut或Append方式打开文件,然后用写入语句写入内容。在使用完文件后,应关闭对应的文件。格式分别如
13、下: Print#文件号,表达式列表 将格式化显示的数据顺序写入文件 Write#文件号,表达式列表 将用逗号“,”分开的数据顺序写入文件 Close 关闭对应的文件,【例7.1】 顺序文件的基本应用。设计一个程序,要求类似一个简易的文本编辑器。 (1) 按照图7-7所示样式设计窗体。加入命令按钮Command1(打开文件)、Command2(保存文件)、Command3(结束)和文本框Text1。 (2) 参照表7-2设置各个控件的属性。,图7-7 顺序文件的基本操作,表7-2 图7-7所示控件的属性设置,(3) 编写事件代码。 Private Sub Command1_Click() Di
14、m f_name, t_out, t_line As String 定义变量类型 f_name = “c:frunlog.txt“ 打开的文件位置、名称 Open f_name For Input As #1 以Input方式打开1号文件 Do While Not EOF(1) 循环直到文件尾,Line Input #1, t_line 读入一行数据至变量 t_out = t_out + t_line + Chr(13) + Chr(10) 句尾加空格和回车符 Loop Close #1 关闭文件 Text1.Text = t_out End Sub,Private Sub Command2_
15、Click() Dim f_name As String f_name = “c:sclx.txt“ Open f_name For Output As #1 以Output方式打开文件 Print #1, Text1.Text 将字符写入文件 Close #1 End Sub,Private Sub Command3_Click() Unload Me 关闭 End Sub 这个程序将完成把指定的文件读出,然后重新写入到另一文件中的操作。可以看出,这个程序还有很多可以改良的地方。比如,我们加入命令“Form1.Caption=Form1.Caption+?+f_name”就可以把文本编辑器编辑的文件名显示在窗体上。,一般地,文本编辑器的窗体工作区随着整个主窗体的变化而变化,而本例的窗体工作区大小不变。如何做到这一点呢?可以在代码中加入如下一段程序: Private Sub Form_Resize() 使文本框占据整个窗体的客户区 Text1.Top = 0 Text1.Left = 0 Text1.Width = ScaleWidth 使文本框宽度适应窗体宽度 Text1.Height = ScaleHeight End Sub,可以看出,在有关文件的操作过程中,使用到很多语句和函数,表7-3和表7-4分别列出了常用的语句和函数。有关的具体语法和格式,请