怎样用TreeView和ListView造出windows资源管理器的样子

fansin 2000-02-07 09:13:00
怎样用TreeView和ListView造出windows资源管理器的样子,谢了!
...全文
593 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianye 2001-02-20
  • 打赏
  • 举报
回复
如果真的做递归程序慢的要死,
我做过,可以装入,但是没有资源管理器的快,
不知道为什么。
资源管理器好象是点击的时候才装一层。
这样可以快些。
上面的代码我没看,
不过估计他应该写的对。(不然不会贴出来)
:)
CPLiu 2001-02-14
  • 打赏
  • 举报
回复
你到底要什么???
4_Eye_Cat 2001-02-14
  • 打赏
  • 举报
回复
发表时间:2000-2-7 21:13:00

怎样用TreeView和ListView造出windows资源管理器的样子,谢了!
====================
人家要的是一个样子,没有说要做资源管理器啊?!!!!!!!!!!!
奇怪!!!!!!!~~~~~~~~~~~


:)
vbdabster 2001-02-14
  • 打赏
  • 举报
回复
我也是看到500分的帖子才进来的,这是怎么回事?
haor 2001-02-14
  • 打赏
  • 举报
回复
我想问一下怎么才能发500分的贴子啊?
TrueZq 2001-02-14
  • 打赏
  • 举报
回复
分好多了!可惜我得不到。
bjseaman,可以把你的源程序发一份给我吗?
TrueZq@21cn.com
Putao 2000-09-10
  • 打赏
  • 举报
回复
用DELPHI就简单了.
Putao 2000-09-10
  • 打赏
  • 举报
回复
用DELPHI就简单了.
xiali 2000-09-10
  • 打赏
  • 举报
回复
VB5和VB6都有一个有关TreeView和ListView的一示例代码,VB6的示例文件是:\Microsoft Visual Studio\MSDN98\98VS\2052\SAMPLES\VB98\Datatree\Datatree.vbp;它还要用到Biblio.mdb数据库文件;请参考,也许可以解决你的问题.
xiali 2000-09-10
  • 打赏
  • 举报
回复
VB5和VB6都有一个有关TreeView和ListView的一示例代码,VB6的示例文件是:\Microsoft Visual Studio\MSDN98\98VS\2052\SAMPLES\VB98\Datatree\Datatree.vbp;它还要用到Biblio.mdb数据库文件;请参考,也许可以解决你的问题.
xiali 2000-09-10
  • 打赏
  • 举报
回复
VB5和VB6都有一个有关TreeView和ListView的一示例代码,VB6的示例文件是:\Microsoft Visual Studio\MSDN98\98VS\2052\SAMPLES\VB98\Datatree\Datatree.vbp;它还要用到Biblio.mdb数据库文件;请参考,也许可以解决你的问题.
bjseaman 2000-02-24
  • 打赏
  • 举报
回复
我有资源管理器的源程序,大部分功能都能实现
就是不支持拖放
忘记在哪里下载的了
你如果需要email我,我发给你
bjseaman@sina.com
sunbn 2000-02-15
  • 打赏
  • 举报
回复
有专门的控件,是直接模仿的
playyuer 2000-02-15
  • 打赏
  • 举报
回复
如果仅仅是要实现资源管理器的外观,则:
请到Http://playyuer.spedia.net
参阅:
《在 VB 中用 ActiveX Dll 实现界面控制模块的独立》正文
例程下载 (2000.02.01)
摘要:
...
例2:在Delphi提供了Splitter控件,轻而易举就实现了窗体界面的分割视图,而在VB
中要实现这一功能则要编写大量代码了,可参阅VB6的"树状视图列表视图拆
分条"控件集或"VB 应用程序向导 - 资源管理器样式"代码,现将其加工移植为
ActiveX Dll 部件:
创建ActiveX Dll(命名为:EasyViews)工程,并在类模块(命名为:SplitView)
添加如下代码:
...



Firing_Sky 2000-02-14
  • 打赏
  • 举报
回复
就像Venne说的一样,在左边的TreeView中通过递归来生成目录树,在当前选定的树叶更改时,就在列表框里显示当前分支下的目录列表,这样就形成了资源管理器的基本框架
active 2000-02-14
  • 打赏
  • 举报
回复
如果仅仅是要实现资源管理器的外观,则可以使用VB的模板来生成一个程序
Venne 2000-02-07
  • 打赏
  • 举报
回复
我首先想告诉你的是,下面的代码仅仅给出一层关系。如果要实现子目录的功能,你需要按照这个方法做递归运算。不过,建议你递归只要一层,即只寻找该目录下是否有子目录,并只增加这一层子目录的节点,而如果用户在这一层节点上点击时,你再做一次搜索来增加节点。这种做法在子目录嵌套很深的时候是非常有用的,你不用等很久来形成你的目录树。
下面的例子主要是演示了如何使用FINDFIRSTFILE等API函数来查找整个磁盘上的目录和文件。如果在DELPHI中,实现是会更简单一点,而在VB里,我不得不增加一个模块来放置了许多API的声明,甚至我没有使用的。我想你从这些代码里得到做这个的方法。所有我这段代码里可以完成工作包括:
形成你C盘的第一层目录树,当你在一个目录上点击时,将在LISTVIEW中列出该目录下的文件。
没有完成的功能包括:不包括子目录,未有LISTVIEW的几种查看方式,和IMAGELIST的配合图标。这里我想你应该学习如何从文件中得到图标,然后把这个图标加入到一个IMAGELIST中,并把它赋给你的LISTVIEW的某个条目。提示使用API函数ExtractICONEX(好象是这个名字)
还有有关根据屏幕大小来调整TREEVIEW和LISTVIEW,我想有了方法,做这些应该对你很容易。
另外提一句,WINDOWS的资源管理器实现文件搜索并不是这几个函数,而是使用的ISHELL接口,这在DELPHI里比较好做,在VB里如何实现对我也是个问题,所以以下的代码仅算是给你的参考吧!

'----------------------------
'FORM1的代码
'----------------------------

Private Sub Form_Load()
Dim search As WIN32_FIND_DATA
Dim ret As Long
ret = FindFirstFile("C:\*.*", search)
TreeView1.Nodes.Clear

' 设置TREEVIEW的线属性
TreeView1.LineStyle = tvwRootLines

' 增加节点对象
Dim nodX As Node ' 声明一个节点变量
' 第一个节点为C盘,当然可以加入更多的盘,可以用GETDRIVETYPE来检测
Set nodX = TreeView1.Nodes.Add(, , "Root", "C:\")
Dim i As Long
Dim j As Long
j = 0
i = 1
Do While i <> 0
If (search.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
'检测搜索到的文件属性是否是目录
j = j + 1
Set nodX = TreeView1.Nodes.Add("Root", tvwChild, "Child" + Str(j), Trim(search.cFileName))
End If
i = FindNextFile(ret, search)
Loop
nodX.EnsureVisible
loaditem ListView1, "C:"
End Sub

Private Sub TreeView1_Click()
Dim NowNode As Node
Set NowNode = TreeView1.SelectedItem
If NowNode.Text <> "" Then
loaditem ListView1, NowNode.Parent.Text + NowNode.Text
End If
End Sub

'---------------------------
'模块一的代码
'----------------------------
Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Public Const MAX_PATH = 260
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10

Public Sub loaditem(List As ListView, path As String)
Dim search As WIN32_FIND_DATA
Dim ret As Long
Dim FindKey As String
FindKey = path + "\*.*"
ret = FindFirstFile(FindKey, search)

Dim Nowitem As ListItem ' 声明LISTVIEW的条目变量.
Dim i As Long
Dim j As Long
j = 0
If ret <> 0 Then
i = 1
Else
i = 0
End If
List.View = lvwList
List.ListItems.Clear
Do While i <> 0
If (search.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY Then
j = j + 1
Set Nowitem = List.ListItems.Add(j, , Trim(search.cFileName))
End If
i = FindNextFile(ret, search)
Loop

End Sub

'-----------------------------------------------------------------
'最后说明一点,只要在窗口上放置一个TREEVIEW和LISTVIEW即可运行本代码\

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧