![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание объекта в FastReport [D6, MSSQL]
Светлана © (2005-01-22 15:27:00)Есть FastReport'овский отчет. Нужно при событии [OnBeforePrint] в MasterData1 (TfrBandView) в цикле создавать объекты, например TfrLineView.
Подскажите пожалуйста как это сделать.
Светлана (2005-01-22 17:06:00) [1]Спасибо, сейчас попробую...
Соловьев (2005-01-22 16:59:00) [2]>Не пойму, что у тебя за SELECT 1 UNION ?
генеришь наборданных. такой, чтобы он тебе возвратил нужное кол-во записей, тебе нужно 3 линии, значит запрос должен быть
select 1 union select 2 union select 3
И т.д.
и присваиваешь эту строку ADOQuery в том же событии.
...
CountLines.Close;
CountLines.SQL := 'select 1 union select 2 union select 3'//или переменную;
CountLines.Open;
...
И єтот источник данных указываешь у Cross tab
Светлана (2005-01-22 16:45:00) [3]очень интересная идея :)))
Только вот поконкретней объясни, плиз. Не пойму, что у тебя за SELECT 1 UNION ?.... И у кого мы заполняем в OnBeforePrint?
Соловьев (2005-01-22 16:39:00) [4]кажысь придумал:)
ложим Cross tab на него линию, поключаем его к источнику данных, который запоняем в OnBeforePrint:
select 1 union select 2 ... unoin select n
где n - кол-во нужных вертикальных линий.
Соловьев (2005-01-22 16:32:00) [5]а почему ты хочешь лини использовать, попробй то как ты и показала - с помощью символов. подобрать только нормальный шрифт.
Светлана (2005-01-22 16:31:00) [6]Вот мне бы узнать как создавать объект в FastReport'е в рантайме и всё тогда заработает :)
Светлана (2005-01-22 16:30:00) [7]ну так дерево же нужно! Красивое и полноценное :)))
Соловьев (2005-01-22 16:28:00) [8]понял... а без вертикальных линий никак?
Светлана (2005-01-22 16:23:00) [9]Ну нарисуй дерево, в котором больше одного уровне вложенности.
├ данные(1 уровень)
│ ├ данные (2 уровень)
│ │ ├ данные (3 уровень)
│ │ │ └ данные (4 уровень)
│ │ └ данные (3 уровень)
│ └ данные (2 уровень)
└ данные (1 уровень)
вот видишь в четвертой строке на четырех уровнях нужно создавать четыре объекта (разных). Так не хватает же 3-х элементов.
Соловьев (2005-01-22 16:17:00) [10]У тебя же один рядок MasterData1 - это один уровень одной ветки?
вот в событии OnBeforePrint и ставишь их по Left в зависимости от глубины и делаешь Visible в зависимости от лист это или середина ветки.
Соловьев (2005-01-22 16:15:00) [11]достаточно 3-х элементов.
Зачем 32? а если 64 уровня вложености - создавать 64 линии?
Светлана (2005-01-22 16:12:00) [12]Представь, что у тебя 32 уровня вложенности.
Разве правильно будет создавать
32 прямые линии │,
32 линии - "окончание ветки" └ и
32 линии вот такого вида ├ (уж и не знаю, как их назвать :)))
А потом в цикле перебирать именами объектов и "играться" с Visible?
Мне кажется, что грамотнее было бы создавать, опираясь на данные, нужные объекты.
Соловьев (2005-01-22 16:04:00) [13]>Нужно только, в зависимости от того, какие данные в текущей строке
> на соответсвующем уровне создавать объект соответсвующего вида
Ничего создавать не надо. Играешся с Visible.
Светлана (2005-01-22 15:59:00) [14]Потому что уровней вложенности дерева у каждой записи может быть несколько. И соответсвенно нужно создавать объекты (к тому же разные). В данных уже всё это есть. Нужно только, в зависимости от того, какие данные в текущей строке на соответсвующем уровне создавать объект соответсвующего вида.
Соловьев (2005-01-22 15:55:00) [15]положи нужные тебе лини и смещай их в OnBeforePrint, зачем криейтить?
Светлана (2005-01-22 15:50:00) [16]Рисую деревовидный отчет. Данные готовы. Надо только само собстнна дерево нарисовать.
Соловьев (2005-01-22 15:44:00) [17]а зачем?