{$R *.DFM} 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;
procedure TForm1.Button3Click(Sender: TObject); var i:integer; abc:Tstrings; s:string; begin abc:=TStringlist.Create; for i:=0 to 23 do begin s := Chr(65+i)+':\'; // if GetDriveType(PChar(s))= DRIVE_cdrom then if directoryexists(s) then begin s:=copy(s,0,2) ; abc.Add(s); end; end; for i:=0 to abc.Count-1 do BEGIN S:=abc.strings[i]; CreateDirectoryTree(S, '['+s+'\]'); END end;