всё. допер. тебе нужно отображать вложенные директории тогда тебе нужно что-то вроде:
| Код | procedure GetTreeDirs(Root: string; OutPaper: TStringList); var i: Integer; s: string;
procedure InsDirs(s: string; ind: Integer; Path: string; OPaper: TStringList); var {Вставляет в Memo список вложенных директорий} sr: TSearchRec; attr: Integer; begin attr := 0; attr := faAnyFile; if DirectoryExists(Path) then if FindFirst(IncludeTrailingBackslash(Path) + '*.*', attr, SR) = 0 then begin repeat if (sr.Attr = faDirectory) and (sr.Name[Length(sr.Name)] <> '.') then OPaper.Insert(ind, s + sr.Name); until (FindNext(sr) <> 0); FindClose(SR); end end;
begin {Проверяем существуетли начальный каталог} if not DirectoryExists(Root) then exit; {Создаем список каталогов первой вложенности} if root[Length(Root)] <> '\' then InsDirs(root + '\', OutPaper.Count, Root, OutPaper) else InsDirs(root, OutPaper.Count, Root, OutPaper); i := 0; repeat s := OutPaper[i]; //в s получаем путь к уже внесенному в список кат. // Вставляем сразу за данной директорией в списке, // список вложенных в нее директорий. // Тем самым увеличиваем OutPaper.Lines.Count. // Таким образом катологи в которых поиск еще не производился, // оказываются ниже и очереь до них еще дойдет. InsDirs(s + '\', i + 1, OutPaper[i], OutPaper); inc(i); until (i = OutPaper.Count); end;
|
а вот так можно юзать
| Код | procedure TForm1.Button1Click(Sender: TObject); var Strs: TStringList; begin Strs := TStringList.Create; try GetTreeDirs('C:\', Strs); FillTreeViewWithFiles(TreeView1, Strs); finally Strs.Free; end; end;
|
|