Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 08:45   #1
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию TTreeview

возможно ли построить дерево таким образом: есть папка Kurs ,в ней файлы(разделы) .Раньше я просто находил файлы в папке и отбражал их в дереве
Код:
var
  SR: TSearchRec;// поисковая переменная
  FindRes: Integer;
 Node1: TTreeNode;
begin
 TV2.Items.Clear;
 FindRes:= FindFirst('.\kurs\\*.test',faAnyFile,SR);
      while FindRes = 0 do
        begin
           Form2.TV2.Items.Add(node1,SR.Name); //добавляем название найденного элемента
           FindRes:=FindNext(SR); // прродожение поиска по задангому условию
           end;
           FindClose(SR);
а терь нужно чтобы они были как разделами. Тоесть главный нод название папки (она находица в папке с прогой) а а то что в ней должны отображаться как дочерние

Последний раз редактировалось crit; 09.06.2009 в 21:12.
crit вне форума Ответить с цитированием
Старый 10.06.2009, 10:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тоесть главный нод название папки (она находица в папке с прогой) а а то что в ней должны отображаться как дочерние
Ниче не понял... Нарисуй структуру.
Может тебе нужен рекурсивный поиск и построение?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2009, 12:25   #3
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

ну есть папка kurs на диске, в ней файлы. нужно отобразить в виде дерева. тоесть я отобразил тока файлы(код выше), а мне надо чтобы отображалась папка, а в ней отображались файлы таким же образом как у меня в коде выше
crit вне форума Ответить с цитированием
Старый 10.06.2009, 12:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а мне надо чтобы отображалась папка
Во-первых, тебе нужно все файлы в одной ветке отображать (т.е. у тебя будет одна единственная главная ветка, в которой будут накиданы файлы)? или среди файлов могут быть папки, в них подпапки и т.д.

Во-вторых: А не проще ли взять скажем компонент ShellTreeView или ему подобный?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2009, 13:11   #5
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

нет,папок и подпапок не должно быть.. Я незнаю получица ли если я буду использовать ShellTreeView, открыть файл теста в тестировании..
Просто у меня система тестирования,я щелкаю в дереве по файлу и открывается форма тестирования уже с вопросами и ответами из этого файла
вот отрывок из функции когда я щелкаю на файл теста в дереве и открывается форма тетсирования:

assignfile(Test, Form2.TV.Selected.Text);
count:=0; //Обнуляем счетчик вопросов и счетчик правильных ответов
truecount:=0;
path:='';
path:=Form2.TV.Selected.Text+'\kurs \.test';
Form1.Caption:=GetTestName(path,'te st')+' - Тест'; //Запоминаем путь к файлу


поэтому я и думаю лучше всего Treeview
crit вне форума Ответить с цитированием
Старый 10.06.2009, 14:04   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Думаю тебе нужно вот такое:
Код:
var sr:TSearchRec; i:integer; tn:TTreeNode;
begin
 FindFirst('d:\*',faAnyFile,sr);
 tn:=TreeView1.Items.Add(nil,'Главное');
 repeat
 TreeView1.Items.AddChild(tn,sr.Name);

 until FindNext(sr)<>0;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2009, 18:48   #7
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

так,а есои надо будет 2 папки отобразить и содержимое? то повторить
tn:=TreeView1.Items.Add(nil,'Главно е2');?

Последний раз редактировалось crit; 10.06.2009 в 18:57.
crit вне форума Ответить с цитированием
Старый 10.06.2009, 19:31   #8
crit
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 121
По умолчанию

еще один вопрос , отображается в дереве как *.test, можно както вырезать .test?
crit вне форума Ответить с цитированием
Старый 16.06.2009, 08:32   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
так,а есои надо будет 2 папки отобразить и содержимое? то повторить
Ну оформи это в виде функции и вызывай сколько нужно.

Вообще может тогда тебе просто сделать стандартный рекурсивный обход по папкам?

Цитата:
отображается в дереве как *.test, можно както вырезать .test?
Ну да. Ты ж туда просто строку загоняешь, вот и вырезай все до последней точки
или типа такого:
Код:
 TreeView1.Items.AddChild(tn,Copy(sr.Name,1,length(sr.Name)-5));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TTreeView Sergey2 Компоненты Delphi 1 16.09.2009 15:22
TTreeView Sergey2 Компоненты Delphi 11 07.05.2009 21:09
Ноды в TTreeView PlayerDark Компоненты Delphi 10 03.05.2009 19:51
TTreeView alll_23 Общие вопросы Delphi 2 23.10.2007 12:36