Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
ВнизTreeView Найти похожие ветки
← →
Эльф (2008-05-13 19:03) [0]Здравствуйте. У меня такая проблема нужно иерархию выбранного каталога добавить в treeview. Написал код но он не полностью подходит под мою задачу.
procedure TForm1.BitBtn1Click(Sender: TObject);
var s,s2,s3:TSearchRec; node:TTreeNode;
begin
/////////////////////////////////////////////////////////////////////////////////////////////// 1 цикл
if FindFirst(ExtractFilePath(ParamStr(0))+"files\*.*",faAnyFile,s)=0 then //Поиск в папке files всех документов
repeat
begin
if (s.Name=".")or(s.Name="..") then Continue; //точку и две точки отбрасываем
node:= TreeView1.Items.Add(nil,s.Name); //добавляем найденный файл или папку в дерево
TreeView1.Select(node); //выделяем добавленный файл или папку
/////////////////////////////////////////////////////////////////// 2 цикл
if FindFirst(ExtractFilePath(ParamStr(0))+"files\"+s.Name+"\*.*",faAnyFile,s2)=0 then //ищем во вложенной папке
repeat
begin
if (s2.Name=".")or(s2.Name="..") then Continue;
node:= TreeView1.Items.AddChild(TreeView1.Selected,s2.Name); //добавляем как дочерний компонент
////////////////////////////////////////////////// 3 цикл
if FindFirst(ExtractFilePath(ParamStr(0))+"files\"+s.Name+"\"+s2.Name+"\*.*",faAnyFile,s3)=0 then
repeat
begin
if (s3.Name=".")or(s3.Name="..") then Continue;
node:= TreeView1.Items.AddChild(TreeView1.Selected,s3.Name);
end;
until (FindNext(s3) <> 0); //условие поиска во вложенной папке
FindClose(s3);
////////////////////////////////////////////////// 3 цикл
end;
until (FindNext(s2) <> 0); //условие поиска во вложенной папке в папку files
FindClose(s2);
////////////////////////////////////////////////////////////////////// 2 цикл
end;
until (FindNext(s) <> 0); //условие поиска в папке files
FindClose(s);
////////////////////////////////////////////////////////////////////////////////////////////////// 1 цикл
end;
Этот код правильно отображает каталоги самого верхнего уровня
← →
Palladin © (2008-05-13 19:05) [1]А каталоги уровней повыше неправильно? :)
← →
Эльф (2008-05-13 19:08) [2]Нет надо отобразить все вложенные файлы и папки.
← →
Palladin © (2008-05-13 19:09) [3]так отобрази... чего мешает то? что такое рекурсия в курсе? :)
← →
Сергей М, (2008-05-13 19:11) [4]
> Эльф
Совесть имей, да ?
Смотреть тошно эту кучу неформатированного говна, не то что вникать в шевелящуюся в ней "программерскую мысль")
← →
Эльф (2008-05-13 19:17) [5]
> так отобрази... чего мешает то? что такое рекурсия в курсе?
Рекурсией называется объект, частично состоящий или определяемый с помощью самого себя.
А как это использовать?
← →
Эльф (2008-05-13 21:09) [6]Вот попробывал с рекурсией но выводит полный список файлов, а надо что-бы по иерархии может кто сможет подсказать
procedure Ffind (put:string);
var s:TSearchRec; node:TTreeNode;
begin
if FindFirst(put+"\*.*",faAnyFile,s)=0 then
repeat
begin
if (s.Name=".")or(s.Name="..") then Continue;
if (S.Attr=faDirectory)=false then
node:=Form1.TreeView1.Items.Add(nil,s.Name)
else
begin
node:=Form1.TreeView1.Items.AddChild(nil,s.Name);
Ffind(put+"\"+s.Name);
end;
end;
until (FindNext(s) <> 0); //условие поиска в папке files
FindClose(s);
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.057 c