![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Построение дерева [D6, Win2k]
Илайдж © (2003-03-03 17:22:00)Есть табличка
ID PARENT_ID NAME
1 0 Основная ветка
2 1 Подветвь 1
3 2 Подветвь 1-1
4 1 Подветвь 2
5 4 Подветвь 2-1
Как:
1 - вытащить одним запросом всю структуру дерева
2 - построить его?
Заранее сенк.
Илайдж (2003-03-03 17:49:00) [21]А..я кажется понял, упорядочить таким образом, а потом прогнать через while not eof?
Сенк, попробую.
gsu (2003-03-03 17:47:00) [22]procedure TForm1.Button2Click(Sender: TObject);
var
tn: TTreeNode;
begin
with TreeView1.Items do
begin
Clear;
tn:=Add(nil, "1");
tn:=AddChild(tn, "11");
tn:=Add(tn, "12");
tn:=AddChild(tn, "121");
tn:=Add(tn, "122");
Add(tn, "123");
tn:=tn.Parent;
Add(tn, "13");
tn:=Add(nil, "2");
tn:=AddChild(tn, "21");
tn:=Add(tn, "22");
Add(tn, "23");
end;
end;
И, вообще, смотрите примеры
calm (2003-03-03 17:44:00) [23]выбирай все с
order by Parent_id, id
Получается упорядоченная структура. С ней можно работать и построить дерево. Это если одним запросом.
Есть несколько компонент, которые строят дерево на основе такой структуры, но для построения дочерних узлов каждого узла вызывается отдельный запрос.
Я и сам разработал один небольшой компонент на эту тему. Но мне нужно было работать с небольшими таблицами, поэтому компонент наверняка не слишком эффективно будет работать с большими объемами данных.
Илайдж (2003-03-03 17:35:00) [24]Мне нужно построить дерево вида
+ Основная ветка
- Подветвь 1
- Подветвь 1-1
- Подветвь 2
- Подветвь 2-1
Хотелось бы кусочек кода на моем примере
gsu (2003-03-03 17:30:00) [25]TTreeView, TTreeNodes
>> 1 - вытащить одним запросом всю структуру дерева
В каком виде ? как в файле ?
>> 2 - построить его?
Add, AddChild