你用一个线程,然后再用循环 var SearchRec : TSearchRec; ItemTemp : TTreeNode; begin with ATreeView.Items do try BeginUpdate; if ADirectory[Length(ADirectory)] <> '\' then ADirectory := ADirectory +'\'; if FindFirst(ADirectory + '*.*', faDirectory, SearchRec) = 0 then begin repeat if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then begin if (SearchRec.Attr and faDirectory > 0) then ARoot := AddChild(ARoot, SearchRec.Name); ItemTemp := ARoot.Parent; DirToTreeView(ATreeView, ADirectory + SearchRec.Name, ARoot, AIncludeFiles); ARoot := ItemTemp; end else if AIncludeFiles then if SearchRec.Name[1] <> '.' then AddChild(ARoot, SearchRec.Name); until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; finally EndUpdate; end; end;
var
SearchRec : TSearchRec;
ItemTemp : TTreeNode;
begin
with ATreeView.Items do
try
BeginUpdate;
if ADirectory[Length(ADirectory)] <> '\' then
ADirectory := ADirectory +'\';
if FindFirst(ADirectory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
ARoot := AddChild(ARoot, SearchRec.Name);
ItemTemp := ARoot.Parent;
DirToTreeView(ATreeView, ADirectory + SearchRec.Name, ARoot, AIncludeFiles);
ARoot := ItemTemp;
end
else if AIncludeFiles then
if SearchRec.Name[1] <> '.' then
AddChild(ARoot, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
finally
EndUpdate;
end;
end;