Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
ВнизПосторение дерева Найти похожие ветки
← →
harismatik (2002-12-18 11:13) [0]Как построить дерево папок со ВСЕМИ вложенными папками (без названий файлов а только папки) в компоненте TTreeView? У меня получается построить только до второго уровня. А как глубже опуститься?
Иллюстрация:
У меня: Нужно:
- папка - папка
- подпапка - подпапка
- подпапка - подпапка
- папка - подпапка
-подпапка - подпапка
-подпапка - подпапка
- папка
- подпапка
Я использую процедуры FindFirst, FindNext и FindClose. Может я чего не так делаю?
← →
Skier (2002-12-18 11:16) [1]>harismatik
Код в студию !
← →
Polevi (2002-12-18 11:18) [2]cлово рекурсия знакомо тебе ?
← →
harismatik (2002-12-18 11:28) [3]2 Polevi - знакомо, только не пойму, как ее вызвать в моем случае. Вот фрагмент моего кода:
Procedure FindAllForTreeView(Path:String; TreeView:TTreeView);
var SearchRec:TSearchRec;
begin
TreeView.Items.Add(nil,Path);
TreeView.Items.Item[0].ImageIndex:=1;
TreeView.Items.Item[0].SelectedIndex:=2;
if FindFirst(Path,faDirectory,SearchRec)=0 then
try
if (SearchRec.Name<>".") and (SearchRec.Name<>"..") then
begin
treeView.Items.AddChild(TreeView.Items.Item[0],SearchRec.Name);
TreeView.Items.Item[1].ImageIndex:=1;
TreeView.Items.Item[1].SelectedIndex:=2;
end;
while FindNext(SearchRec)=0 do
begin
if (SearchRec.Name<>".") and (SearchRec.Name<>"..") then
begin
if (SearchRec.Attr and faDirectory=faDirectory) then
begin
TreeView.Items.AddChild(TreeView.Items.Item[0],SearchRec.Name);
TreeView.Items.Item[TreeView.Items.Count-1].ImageIndex:=1;
TreeView.Items.Item[TreeView.Items.Count-1].SelectedIndex:=2;
end;
end;
end;
finally
FindClose(SearchRec);
TreeView.AlphaSort;
end;
end;
← →
Skier (2002-12-18 12:50) [4]>harismatik
Ну вот как-то так :
procedure TForm1.Button1Click(Sender: TObject);
Procedure FindAllForTreeView(Path:String; TreeView:TTreeView; ACurrNode : TTreeNode);
var
ASearchRec : TSearchRec;
AFound : Boolean;
begin
if ACurrNode = nil then begin
TreeView.Items.Add(nil,Path);
ACurrNode := TreeView.Items.Item[0];
end; //if
try
if Path[Length(Path)] <> "\" then Path := Path + "\";
AFound := FindFirst(Path + "*.*",faAnyFile,ASearchRec) = 0;
while AFound do begin
if (ASearchRec.Name <> ".") and (ASearchRec.Name <> "..")
and (ASearchRec.Attr and faDirectory=faDirectory) then begin
ACurrNode := TreeView.Items.AddChild(ACurrNode,ASearchRec.Name);
FindAllForTreeView(Path + ASearchRec.Name + "\", TreeView, ACurrNode);
ACurrNode := ACurrNode.Parent;
end; //if
AFound := FindNext(ASearchRec) = 0;
end; //while
finally
FindClose(ASearchRec);
end; //try
end;//FindAllForTreeView
begin
FindAllForTreeView("C:\WINNT", TreeView1, nil);
end;
← →
Polevi (2002-12-18 12:52) [5]procedure TForm1.BuildTree(Path: string; Node: TTreeNode);
var
SearchRec:TSearchRec;
begin
if FindFirst(Path+"\*.*",faDirectory,SearchRec)=0 then
repeat
if (SearchRec.Name<>".") and (SearchRec.Name<>"..") and (SearchRec.Attr=faDirectory) then
BuildTree(Path+SearchRec.Name,TTreeView(Node.TreeView).Items.AddChild(Node,SearchRec.Name));
until FindNext(SearchRec)<>0;
FindClose(SearchRec);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.Items.Add(nil,"Root");
BuildTree("c:",TreeView1.Items[0]);
end;
← →
Polevi (2002-12-18 13:03) [6]сорри, ошибся
procedure TForm1.BuildTree(Path: string; Node: TTreeNode);
var
SearchRec:TSearchRec;
begin
if FindFirst(Path+"*.*",faDirectory,SearchRec)=0 then
repeat
if (SearchRec.Name<>".") and (SearchRec.Name<>"..") and (SearchRec.Attr=faDirectory) then
BuildTree(Path+SearchRec.Name+"\",TTreeView(Node.TreeView).Items.AddChild(Node,SearchRec.Name));
until FindNext(SearchRec)<>0;
FindClose(SearchRec);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.Items.Add(nil,"Root");
BuildTree("d:\",TreeView1.Items[0]);
end;
← →
diMAN (2002-12-18 16:56) [7]Небольшое дополнение:
Необходимо заменить
(SearchRec.Attr=faDirectory)
на
((SearchRec.Attr and faDirectory) <> 0)
,
ведь папки бывают разные :)), в том числе и с установленными
атрибутами faReadOnly, faHidden, faSysFile, faArchive.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c