Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
ВнизВопрос по TreeView Найти похожие ветки
← →
leonidus (2003-09-19 22:00) [0]Подскажите пожалуйста как с помощью компонента TreeView отобразить файловую структуры данной директории если все содержащиеся в ней файлы с полным путем к ним я уже нашел и поместил в массив?
← →
Palladin (2003-09-20 00:28) [1]и где затруднения?
← →
leonidus (2003-09-20 01:05) [2]Затруднения в том как создать древовиднуб структуру, если это не сложно киньте кусочек кода.
← →
jack128 (2003-09-20 01:09) [3]TreeView1.AddChild(<родительский узел>, <название узла>);
← →
Palladin (2003-09-20 01:34) [4]... и ведь в справке пример присутствует, в папке demos пример присуствует... где он только не присутствует :)
← →
ZEE (2003-09-20 10:58) [5]http://www.sources.ru/delphi/delphi_directory_tree.shtml
← →
leonidus (2003-09-20 12:26) [6]> ZEE огромное спасибо, я еще не во всем там разобрался, но это то что надо. Спасбо всем.
← →
leonidus (2003-09-22 01:35) [7]Блин че-то я туплю, вот код который я использую для заполнения TreeView из элементов массива turn[i] (размер массива razm_turn). В массиве находятся URL-ссылки на документы хранящиеся на сервере в папках. Все ссылки вида http://www.abcd.ru/...... Переменная pr_start_url содержит начальный URL т.е. http://www.abcd.ru/
procedure AddNode(ConstNode: TTreeNode; name: String; HasChildren:boolean; var active_node:TTreeNode);
//процедура добавляет в узел ConstNode узел name указывает
//будет ли этот узел содержать дочернии и возвращает
//active_node указатель на созданный узел
begin
active_node:=form1.treeview1.Items.AddChild(ConstNode,name);
if HasChildren then ConstNode.HasChildren := True;
end;
Непоследственно код вызова процедуры добавления.
treeView1.Items.Clear;
node_start:=treeview1.Items.Add(nil,pr_start_url);
for i:=1 to razm_turn do
begin
//удаляем из ссылки первую часть ( http://www.abcd.ru/) она нам не нужна
st:=copy(turn[i],length(pr_start_url)+1,length(turn[i]));
nom:=1;
node2:=node_start;
for l:=1 to length(st) do
begin
if st[l]="/" then
begin
st1:=copy(st,nom,l-nom);
p:=ansipos(".",st1); //определяем это файл или директория
if(nom=1)and(p=0) then AddNode(node_start,st1,true,node2);
if(nom=1)and(p<>0) thenAddNod(node_start,st1,false,node2);
if(nom<>1)and(p=0) then AddNode(node2,st1,true,node2);
nom:=l+1;
end;
end;
// получаем имя файла после последнего слеша
st1:=copy(st,nom,length(st));
if nom=1 then AddNode(node_start, st1, false, node1)
else AddNode(node2, st1, false, node1);
end;
end;
В принципе все работает, но мне кажется что алгоритк какой-то топорный, но все бы ничего если бы только в случае когда в массиве есть две ссылки такого вида:
http://www.abcd.ru/images/pic1.jpg
http://www.abcd.ru/images/pic1.jpg
то я получаю ДВА узла с именем images хотя мне нужен один и в нем два под узла pic1.jpg и pic2.jpg.
Подскажите пожалуйста где как исправить такой глюк.
← →
leonidus (2003-09-22 09:59) [8]Подскажите плиз!!!
← →
ZEE (2003-09-22 10:25) [9]>Подскажите пожалуйста где как исправить такой глюк.
после строки
st1:=copy(st,nom,l-nom);
проверяй нет ли уже узла с таким именем
и еще
p:=ansipos(".",st1); //определяем это файл или директория
разве в названии директорий не может быть точки - лучше проверять нет справа от названия этой директории символа "/"
← →
Palladin (2003-09-22 10:26) [10]может следует сразу читать в treeview чем маятся дурью с парснигом...
← →
leonidus (2003-09-22 13:35) [11]>Palladin сразу в treeview не получится, т.к. в массиве храняться не обработанные ссылки, а в treeview надо отображать ссылки по мере их отработки (программа выкачивает эти файлы и отображает структуру сайта). Помогите пожалуйста модифицировать алгоритм.
← →
leonidus (2003-09-22 22:55) [12]>Мастера помогите пожалуйста!
← →
Palladin (2003-09-23 08:09) [13]Гораздо проще и быстрее собрать путь по дереву чем разобрать в дерево...
← →
leonidus (2003-09-23 09:44) [14]>Palladin я Вас не понимаю. Я не профессиональный программист, меня просто попросили написать эту прогу. Если у Вас есть кусок кода пожалуйста поделитесь или скажите что надо изменить в моем. Заранее благодарен.
← →
Palladin (2003-09-23 09:47) [15]Существует Teleport, прекрасная скачивалка сайтов, много других инструментов написанных профессиональными программистами. Почему же Вас попросили написать?
← →
leonidus (2003-09-23 23:55) [16]Это другой вопрос. Пожалуйста подскажите мне ответ на мой.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.117 c