看看能不能抢点分: procedure BuildFileTree(Tree: TTreeView); procedure LoadSubDir(Node: TTreeNode; Dir: string); var F: TSearchRec; hFind: Integer; nChild: TTreeNode; begin if Dir[Length(Dir)] <> '\' then Dir := Dir + '\'; hFind := FindFirst(Dir + '*.*', FILE_ATTRIBUTE_DIRECTORY, F); while hFind = 0 do begin if (F.Name <> '.') and (F.Name <> '..') and (F.Attr and faDirectory = faDirectory) then begin nChild := Tree.Items.AddChild(Node, F.Name); LoadSubDir(nChild, Dir + F.Name); end; hFind := FindNext(F); end; FindClose(F); end;var DriveBits: set of 0..25; i: Integer; nDriver: TTreeNode; Dir: string; begin Tree.Items.BeginUpdate; try Tree.Items.Clear; Integer(DriveBits) := GetLogicalDrives; for i := 0 to 25 do if i in DriveBits then begin Dir := Chr(i + Ord('A')) + ':\'; nDriver := Tree.Items.AddChild(nil, Dir); LoadSubDir(nDriver, Dir); end; finally Tree.Items.EndUpdate; end; end;procedure TForm1.Button1Click(Sender: TObject); var S: string; begin GetDir(0, S); ShowMessage(S); BuildFileTree(TreeView1); end;
procedure BuildFileTree(Tree: TTreeView); procedure LoadSubDir(Node: TTreeNode; Dir: string);
var
F: TSearchRec;
hFind: Integer;
nChild: TTreeNode;
begin
if Dir[Length(Dir)] <> '\' then
Dir := Dir + '\'; hFind := FindFirst(Dir + '*.*', FILE_ATTRIBUTE_DIRECTORY, F);
while hFind = 0 do
begin
if (F.Name <> '.') and (F.Name <> '..') and
(F.Attr and faDirectory = faDirectory) then
begin
nChild := Tree.Items.AddChild(Node, F.Name);
LoadSubDir(nChild, Dir + F.Name);
end;
hFind := FindNext(F);
end;
FindClose(F);
end;var
DriveBits: set of 0..25;
i: Integer;
nDriver: TTreeNode;
Dir: string;
begin
Tree.Items.BeginUpdate;
try
Tree.Items.Clear;
Integer(DriveBits) := GetLogicalDrives;
for i := 0 to 25 do
if i in DriveBits then
begin
Dir := Chr(i + Ord('A')) + ':\';
nDriver := Tree.Items.AddChild(nil, Dir);
LoadSubDir(nDriver, Dir);
end;
finally
Tree.Items.EndUpdate;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
GetDir(0, S);
ShowMessage(S);
BuildFileTree(TreeView1);
end;