Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание объекта в 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]

а зачем?


Наверх

Титульная страница Поиск, карта сайта Написать письмо