| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4764 人关注过本帖
标题:在VB中提示用户选择文件夹?
只看楼主 加入收藏
gavin007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-7-24
收藏
 问题点数:0 回复次数:7 
在VB中提示用户选择文件夹?
各位,我想在VB中弹出一选择文件夹的窗口来选择指定的文件夹,,并且可以在该窗口上创建新文件夹,但是不涉及文件..如何做?

谢谢

搜索更多相关主题的帖子: 提示 文件 用户 选择 
2006-07-24 14:28
VB爱上我
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:478
专家分:52
注 册:2005-10-14
收藏
得分:0 
Private Sub Command1_Click()
C.ShowOpen
If C.FileName <> "" Then
a = InStrRev(C.FileName, "\", -1, 2)
Text1 = Left(C.FileName, a - 1)
End If
End Sub

IT618资讯网 提供服务端开发,前端开发,网页特效,热门开源系统研究,软件下载,站长建站,淘宝开店等学习资料.
2006-07-24 17:40
gavin007
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-7-24
收藏
得分:0 
谢谢,
但我还是想在提示的窗口中不要有出现与文件相关的信息,因为用户所要选择的目录与目录中的文件没有关系,在你的示例中用户还是要点击一下目录中的某一个文件的. 只点击目录名还是不行.
2006-07-24 22:03
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
使用 SHBrowseForFolder 函數,

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-25 01:08
VB爱上我
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:478
专家分:52
注 册:2005-10-14
收藏
得分:0 

Private Sub Dir1_Change()
Text1 = Dir1.Path
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub


IT618资讯网 提供服务端开发,前端开发,网页特效,热门开源系统研究,软件下载,站长建站,淘宝开店等学习资料.
2006-07-25 08:28
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
以下是引用yeshirow在2006-7-25 1:08:35的发言:
使用 SHBrowseForFolder 函數,

这是API吗?


2006-07-25 11:15
VB爱上我
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:478
专家分:52
注 册:2005-10-14
收藏
得分:0 
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Const BIF_RETURNONLYFSDIRS = &H1
Private pidl As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Private Sub command1_Click()
Dim bi As BROWSEINFO
Dim r As Long
Dim pidl As Long
Dim path As String
Dim pos As Integer
'句柄
bi.hOwner = Me.hWnd
'展开根目录
bi.pidlRoot = 0&
'列表框标题
bi.lpszTitle = "请选择软件安装路径:"
'规定只能选择文件夹,其他无效
bi.ulFlags = BIF_RETURNONLYFSDIRS
'调用API函数显示列表框
pidl = SHBrowseForFolder(bi)
'利用API函数获取返回的路径
path = Space$(512)
r = SHGetPathFromIDList(ByVal pidl&, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
Text1 = Left(path, pos - 1)
Else: Text1 = ""
End If
End Sub

IT618资讯网 提供服务端开发,前端开发,网页特效,热门开源系统研究,软件下载,站长建站,淘宝开店等学习资料.
2006-07-25 15:20
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

如果要加入 "新建文件夾" 這個按鈕, 還需要有
BIF_NEWFOLDERBUTTON 這個標志,
Const BIF_NEWFOLDERBUTTON = &H40

還可以 DIY 一下這個 對話框, lpfn 的值設置爲一個回調函數的地址就可以了 (AddressOf)
在系統顯示這個對話框的時候, 會先後産生值爲 1, 2, 5 的消息, 通常在 2 裏 DIY

=========
這個對話框的各個控件的 ID:
'信息 Static: 0x3742 (&H3742)
'TreeView: 0x64 (&H64)
'新建文件夾對話框 0x3467 (&H3467)
'確定按鈕: 1
'取消按鈕: 2
'右下角 Sizebox: 0x3747 (&H3747)
"文件夾" static: 0x3748 (&H3748)
'TextBox (Edit): 0x3744 (&H3744)
--------------------------- DIY 主要用到 SetDlg... 開頭的函數..
例如, 在資料管理器的工具欄上的 "複製到" 這個工具, 彈出的對話框中, "新建文件夾" 這個按鈕的文字變成了 "複製"
就是這個道理了


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-28 07:52
快速回复:在VB中提示用户选择文件夹?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025084 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved