TlistView,TTreeView用法(40分)

S

strang

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何使用TListView和TTreeView列出硬盘文件?
 
若你是要使用这样的控件,可以网上找.
实在要自己做,也不是难事.
用API 或FindFirst.fineNext之类的方法,可以得到文件列表,
然后, ListView1.items.add( ...) 就行了.
当然,要做到Windows Explorer这样的高效可能需要研究.
我只能说到这里了.

 
兄弟,给分吧!
在窗体中搞一个ListVeiw、ListImage及Button。

procedure TForm1.Button1Click(Sender: TObject);
var
SearchRec : TSearchRec;
Path : String;
Attr : integer;
Found : integer;
begin
Path := 'c:/*.*';
Attr := faAnyFile;
Found := FindFirst(Path, Attr, SearchRec);
while Found = 0 do
begin
ListView1.Items.Add;
ListView1.Items[ListView1.Items.Count-1].Caption := (SearchRec.Name);
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;

再通过改变ListView的ViewStyle,可以看看不同的显示方式。
 
吕兄提供了文件列表(ListView)的方法,我就提供个建立目录树(TreeView)的方法吧,

procedure TForm1.FormCreate(Sender: TObject);
begin
CreateDirectoryTree('D:', '(D:)');
end;

procedure TForm1.CreateDirectoryTree(RootDir, RootCaption: string);
procedure AddSubDirToTree(RootNode: TTreeNode);
var
SearchRec: TSearchRec;
Path: string;
Found: integer;
begin
Path := PChar(RootNode.Data) + '/*.*';
Found := FindFirst(Path, faAnyFile, SearchRec);
while Found = 0 do
begin
if (SearchRec.Attr = faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
AddSubDirToTree(TreeView.Items.AddChildObject(RootNode, SearchRec.Name,
PChar(PChar(RootNode.Data) + '/' + SearchRec.Name)));
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;
begin
TreeView.Items.Clear;
AddSubDirToTree(TreeView.Items.AddObject(nil, RootCaption, PChar(RootDir)));
end;
 
若你使用 Delphi 4 可以打开 demos/Virtual ListView/VirtualListView.dpr

It's all there.
 
大家把好说的都说完了,天哪!网慢难道是罪过吗?
我补充一点吧!你可以用API: ExtractIcon (EXE、DLL)和 ExtractAssociatedIcon (别的文件)提取有关文件的相关图标、用读取Autorun.inf中的[icon]栏的方法获取驱动器图标(不光是光驱,硬盘也行)加入ImageList,来做些特殊效果是不是看起来要比一般的TreeView和ListView爽一点?
话又说回来了,如果没有特殊效果的话,用Samples页中的
DirectoryOutLine和Win31页中的FileListBox、DriveComboBox、DirectoryListBox等等这些控件直接做岂不是更好、更简单? Simplest is best.
 
给你一个“解决方案“,到DSP去找如下孔件: dirtree,付源代码的
完全解决!

老大,千万给我十分吧,我离第十名只差5分了。

//________________________________________________
// 封网中 ... :(
// 出来逛一逛... :)
 
老大,问题是9月25号出来的,今天是几号?
斑竹,按你的标准斑竹时间计算帖子的时间吧!
 
多人接受答案了。
 
顶部