📄 011101.htm
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title><style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="98%">
<tr>
<td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">基本控件</a></td>
</tr>
<tr>
<td width="100%">
<p align="center">文件系统对象Drive,Dir,File</td>
</tr>
<tr>
<td width="100%"><br>
文件系统对象:<br>
1。驱动器列表框drivelistbox控件;选定驱动器。<br>
2。目录列表框dirlistbox控件;选定文件夹。<br>
3。文件列表框filelistbox控件;选定文件。<br>
以上三个对象要结合在一起使用。先举1例:<br>
Private Sub Dir1_Change() <br>
File1.Path = Dir1.Path --将file1 与dir1对象联系在一起<br>
End Sub<br>
<br>
Private Sub Drive1_Change()<br>
Dir1.Path = Drive1.Drive --将dir1与 drive1对象联系在一起<br>
End Sub<br>
<br>
Private Sub File1_Click()<br>
selectfile = File1.Path & "\" & File1.FileName 定义一个变量记录路径和文件名<br>
Image1.Picture = LoadPicture(selectfile)用loadpicture函数打开文件<br>
End Sub<br>
★ 文件系统对象驱动器列表框(Drive),目录列表框(Dir)和文件列表框(File)对象:<br>
驱动器列表框Drive的drive属性:列表框中当前选择的驱动器;可进行有意地赋值:Drive1.drive="c:\",它的确切返回值是驱动器加卷标,如"c:[sys]"。但这种赋值仅体现在Drive列表框中而已,不能改变当前工作驱动器,要用Chdrive函数来设置当前工作驱动器:Chdrive 驱动器名。如:Chdrive drive1.drive.<br>
目录列表框DIR的path(路径)属性:返回当前目录的路径,如:"c:\ucdos\bin",如果要变更系统的当前目录,则要用Chdir函数,如:Chdir dir1.path,通常我们把Dir对象的path属性和Drive对象的drive属性联系起来,在Drive1_change()事件中写:<br>
Dir1.Path = Drive1.Drive<br>
当驱动器列表框中驱动器一有"change",就给目录列表框的path属性赋一次值(改变),<br>
如drive1改变驱动器到"e:",此时dir1.path就等于"e:\"(在根目录下会自动加上"\"),而由于目录列表框的功能就是能列出当前目录下所包含的所有下一级子目录,因此,在它的框中会列出"e:\"下的所有文件夹(也叫目录),这时你再双击其中某个子目录,使Dir1的path属性又改变,如选择成为"e:\games\jxqy2".<br>
文件列表框的path属性:文件列表框显示其path属性指定目录下的所有文件,而我们一般使它等于Dir1.path,只要在Dir1_change()事件中写:<br>
File1.Path = Dir1.Path<br>
这样,只要dir1的当前目录一有"change",就会在文件列表框中更新文件列表。<br>
文件列表框的filename属性:返回选定的不含路径的纯文件名称,返回如"bkspeak.exe","VB笔记本四.txt"等的文件名,因此,如果我们需要得到完整路径和文件名的话,单靠这个属性是不够的,要加上其path属性内容。如:<br>
Shell File1.Path & "\" & File1.FileName,1<br>
写Dir1.path & "\" & file1.filename也是可以的。这里有一个问题,当在根目录下时,由于Dir1.path会自动加上一个"\",因此根目录下的文件路径就有两个"\"了,会出错,要用出错处理程序。如下:<br>
Private Sub File1_Click()<br>
lxn = Dir1.Path & "\" & File1.FileName<br>
On Error GoTo lxn:<br>
Shell lxn, 1<br>
Exit Sub<br>
lxn:<br>
If Err.Number = 53 Then<br>
lxn = File1.Path & File1.FileName<br>
End If<br>
Resume<br>
End Sub<br>
文件列表框的Pattern属性:限制在文件列表框中只列指定类型的文件,相当于通用对话框的Filter属性,格式:<br>
文件列表框名.pattern="*.扩展名1;*.扩展名2;……"<br>
File1.pattern="*.txt;*.rtf;*.htm"<br>
★ 目录列表框Dir对象的listindex属性:从path指定的当前目录(也就是运行时为打开形状的最下面那个文件夹)开始,该项的listindex值为-1。在列表框中会列出当前目录下的所有下一级子目录,这些下一级子目录的第1个目录(文件夹)的listindex属性值为0,第2个子目录listindex属性值为1……,而在当前目录的上一级(当前目录的父目录),其listindex值为-2,再上一级父目录,其listindex值为-3……,等等,运行时,只要对象中的那条蓝杠改变,就会使对象的listindex值改变。可以验证一下,只要在1个按纽事件中写Print Dir1.ListIndex,然后运行时在DIR1中不断单击鼠标选择不同文件夹(改变那条蓝杠),再按一下按纽,就会发现对象的listindex值不同了。注意如果鼠标双击是进入另1个目录,不是单改变那条蓝杠。那样listindex的值会重新分配。<br>
★ 文件列表框File对象有一个叫pathchange的事件,在其path属性改变时被触发,可能会有用吧。<br>
★ 利用这三个控件,可以方便地实现扫描全盘文件的目的,如下代码将整个驱动器的文件名都列到list2中。<br>
Private Sub Command1_Click()<br>
List1.Clear 'List1存放所有目录(包括多级子目录)。<br>
List2.Clear List2存放所有文件。<br>
Dir1.Path = Left$(Drive1.Drive, 2) + "\" Drive1由用户指定要扫描的驱动器。<br>
File1.Path = Dir1.Path<br>
For t& = 0 To File1.ListCount - 1<br>
List2.AddItem Dir1.Path + File1.List(t&) 驱动器根目录下的文件。<br>
Next<br>
For t& = 0 To Dir1.ListCount - 1<br>
List1.AddItem Dir1.List(t&) 根目录下的第一级子目录。<br>
Next<br>
If t& = 0 Then GoTo finishedpoint 如果驱动器上一个子目录都没有,直接结束。<br>
cnt& = 0 <br>
startpoint:<br>
Dir1.Path = List1.List(cnt&)<br>
File1.Path = Dir1.Path<br>
For t& = 0 To Dir1.ListCount - 1<br>
List1.AddItem Dir1.List(t&) '不断给List1添加子目录。<br>
Next<br>
For t& = 0 To File1.ListCount - 1<br>
List2.AddItem Dir1.Path + "\" + File1.List(t&)<br>
Next<br>
cnt& = cnt& + 1<br>
If cnt& < List1.ListCount Then GoTo startpoint 因为List1的目录数总在不断增加,直到<br>
finishedpoint: 加完全部目录。<br>
Label1.Caption = "Total:" + Str$(List2.ListCount)<br>
End Sub
<p align="center">
<br>
< <a href="011001.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="011201.htm">下一页</a>
><br>
</p>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -