![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать DBTree
Sword © (2003-08-01 17:34:00)
Как распечать данные отображающиеся в DbTree, без потери древовидной структуры
Sir Alex (2003-08-01 19:06:00) [1]
В смысле
memo1.left:=50+currentLevel*20;
Sir Alex (2003-08-01 19:03:00) [2]У меня немного другая структура, но думаю идея будет понятна:
Структура БД:
ID ParentID PNames Name
1 0 "0" "Колбаса"
2 1 "0.2" "Мясо"
3 1 "0.3" "Сало"
4 1 "0.4" "Стабилизаторы"
5 2 "0.2.5" "Баранина"
6 2 ( [DialogForm.qOST."PNAMES"])У меня немного другая структура, но думаю идея будет понятна:
Структура БД:
ID ParentID PNames Name
1 0 "0" "Колбаса"
2 1 "0.2" "Мясо"
3 1 "0.3" "Сало"
4 1 "0.4" "Стабилизаторы"
5 2 "0.2.5" "Баранина"
6 2 "0.2.6" "Свинина"
Теперь отчет:
Есть Master Data, на котором лежит Memo1:"[DialogForm.qOST."NAME"]"
У самого Master Data назначен скрипт:
begin
currentLevel:=[COUNTLEVEL([DialogForm.qOST."PNAMES"])];
memo2.left:=50+currentLevel*20;
end
Где функция COUNTLEVEL просто напросто подсчитывает количество точек в поле PNames (Что даст нам уровень узла в дереве)
Sword (2003-08-01 18:23:00) [3]
Структура
ID
PARENT_ID
NAME
ну и прочие поля с различной информацией
использую FastReport
Sir Alex (2003-08-01 18:19:00) [4]
Можно взять FastReport, потом каждую выводимую строку смещать на
X = 50 + 20*CurrentLevel
Где 20 - Размер смещения одного уровня;
50 - Константа, смещение от левой границы отчета;
CurrentLevel - Уровень текущего узла дерева;
Более подробно не могу написать, т.к. неизвестна структура БД, какой генератор отчетов и т.д.