unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
ListView1: TListView;
procedure FormCreate(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
procedure GetHD;
procedure CreateDirTree(RootNode: TTreeNode);
procedure CreateFileTree(FileNode: TTreeNode);
public
{ Public declarations }
end;var
Form1: TForm1;
MainNode: TTreeNode;
NodeCaption: string;
SelectNode: TTreeNode;implementation{$R *.dfm}procedure TForm1.GetHD;
var
Size: DWORD;
I: Integer;
Buffer: array[0..255] of char;
S: string;
begin
S := '';
MainNode := TreeView1.Items.Add(nil, '我的电脑'); //我的电脑节点
Size := GetLogicalDriveStrings(255, Buffer); //获取分区字符串的长度
for I := 0 to Size - 1 do
begin
if Buffer[I] = #0 then //0#是空串
begin
CreateDirTree(TreeView1.Items.AddChildObject(MainNode, S, PChar(S))); //我的盘符节点
S := '';
end else
S := S + Buffer[I];
end;
end;procedure TForm1.CreateDirTree(RootNode: TTreeNode);
var
SearchRec: TSearchRec;
Path: string;
Found: Integer;
begin
Path := PChar(RootNode.Data) + '\*.*';
Found := FindFirst(Path, faAnyFile, SearchRec); //查找目录,成功返回0
while Found = 0 do //有目录,则运行以下代码
begin
if (SearchRec.Attr = faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
CreateDirTree(TreeView1.Items.AddChildObject(RootNode, SearchRec.Name, PChar(PChar(RootNode.Data) + '\' + SearchRec.Name)));
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
GetHD;
end;procedure TForm1.TreeView1Click(Sender: TObject);
begin
SelectNode := TreeView1.Selected;
CreateFileTree(SelectNode);
end;procedure TForm1.CreateFileTree(FileNode: TTreeNode);
var
SearchRec: TSearchRec;
beginend;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
ListView1: TListView;
procedure FormCreate(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
procedure GetHD;
procedure CreateDirTree(RootNode: TTreeNode);
procedure CreateFileTree(FileNode: TTreeNode);
public
{ Public declarations }
end;var
Form1: TForm1;
MainNode: TTreeNode;
NodeCaption: string;
SelectNode: TTreeNode;implementation{$R *.dfm}procedure TForm1.GetHD;
var
Size: DWORD;
I: Integer;
Buffer: array[0..255] of char;
S: string;
begin
S := '';
MainNode := TreeView1.Items.Add(nil, '我的电脑'); //我的电脑节点
Size := GetLogicalDriveStrings(255, Buffer); //获取分区字符串的长度
for I := 0 to Size - 1 do
begin
if Buffer[I] = #0 then //0#是空串
begin
CreateDirTree(TreeView1.Items.AddChildObject(MainNode, S, PChar(S))); //我的盘符节点
S := '';
end else
S := S + Buffer[I];
end;
end;procedure TForm1.CreateDirTree(RootNode: TTreeNode);
var
SearchRec: TSearchRec;
Path: string;
Found: Integer;
begin
Path := PChar(RootNode.Data) + '\*.*';
Found := FindFirst(Path, faAnyFile, SearchRec); //查找目录,成功返回0
while Found = 0 do //有目录,则运行以下代码
begin
if (SearchRec.Attr = faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
CreateDirTree(TreeView1.Items.AddChildObject(RootNode, SearchRec.Name, PChar(PChar(RootNode.Data) + '\' + SearchRec.Name)));
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
GetHD;
end;procedure TForm1.TreeView1Click(Sender: TObject);
begin
SelectNode := TreeView1.Selected;
CreateFileTree(SelectNode);
end;procedure TForm1.CreateFileTree(FileNode: TTreeNode);
var
SearchRec: TSearchRec;
beginend;end.
procedure ReadFileName(var MyFileList : TStringList; const AnyFile:String);
var
Found:integer;
SearchResult:TSearchRec;
begin
if FileGetAttr(AnyFile)<>faDirectory then begin
MyFileList.Add(AnyFile);
Exit;
end;
Found:=FindFirst(AnyFile+'\*.*',faAnyFile,SearchResult);
while Found=0 do begin
if (SearchResult.Name<>'.')and(SearchResult.Name<>'..') then ReadFileName(MyFileList,AnyFile+'\'+SearchResult.Name);
Found:=FindNext(SearchResult);
end;
if (SearchResult.Name<>'.')and(SearchResult.Name<>'..') then FindClose(SearchResult);
end;