Текущий архив: 2005.02.20;
Скачать: CL | DM;
ВнизСоздание объекта в FastReport Найти похожие ветки
← →
Светлана (2005-01-22 15:27) [0]Есть FastReport"овский отчет. Нужно при событии [OnBeforePrint] в MasterData1 (TfrBandView) в цикле создавать объекты, например TfrLineView.
Подскажите пожалуйста как это сделать.
← →
Соловьев © (2005-01-22 15:44) [1]а зачем?
← →
Светлана (2005-01-22 15:50) [2]Рисую деревовидный отчет. Данные готовы. Надо только само собстнна дерево нарисовать.
← →
Соловьев © (2005-01-22 15:55) [3]положи нужные тебе лини и смещай их в OnBeforePrint, зачем криейтить?
← →
Светлана (2005-01-22 15:59) [4]Потому что уровней вложенности дерева у каждой записи может быть несколько. И соответсвенно нужно создавать объекты (к тому же разные). В данных уже всё это есть. Нужно только, в зависимости от того, какие данные в текущей строке на соответсвующем уровне создавать объект соответсвующего вида.
← →
Соловьев © (2005-01-22 16:04) [5]>Нужно только, в зависимости от того, какие данные в текущей строке
> на соответсвующем уровне создавать объект соответсвующего вида
Ничего создавать не надо. Играешся с Visible.
← →
Светлана (2005-01-22 16:12) [6]Представь, что у тебя 32 уровня вложенности.
Разве правильно будет создавать
32 прямые линии │,
32 линии - "окончание ветки" └ и
32 линии вот такого вида ├ (уж и не знаю, как их назвать :)))
А потом в цикле перебирать именами объектов и "играться" с Visible?
Мне кажется, что грамотнее было бы создавать, опираясь на данные, нужные объекты.
← →
Соловьев © (2005-01-22 16:15) [7]достаточно 3-х элементов.
Зачем 32? а если 64 уровня вложености - создавать 64 линии?
← →
Соловьев © (2005-01-22 16:17) [8]У тебя же один рядок MasterData1 - это один уровень одной ветки?
вот в событии OnBeforePrint и ставишь их по Left в зависимости от глубины и делаешь Visible в зависимости от лист это или середина ветки.
← →
Светлана (2005-01-22 16:23) [9]Ну нарисуй дерево, в котором больше одного уровне вложенности.
├ данные(1 уровень)
│ ├ данные (2 уровень)
│ │ ├ данные (3 уровень)
│ │ │ └ данные (4 уровень)
│ │ └ данные (3 уровень)
│ └ данные (2 уровень)
└ данные (1 уровень)
вот видишь в четвертой строке на четырех уровнях нужно создавать четыре объекта (разных). Так не хватает же 3-х элементов.
← →
Соловьев © (2005-01-22 16:28) [10]понял... а без вертикальных линий никак?
← →
Светлана (2005-01-22 16:30) [11]ну так дерево же нужно! Красивое и полноценное :)))
← →
Светлана (2005-01-22 16:31) [12]Вот мне бы узнать как создавать объект в FastReport"е в рантайме и всё тогда заработает :)
← →
Соловьев © (2005-01-22 16:32) [13]а почему ты хочешь лини использовать, попробй то как ты и показала - с помощью символов. подобрать только нормальный шрифт.
← →
Соловьев © (2005-01-22 16:39) [14]кажысь придумал:)
ложим Cross tab на него линию, поключаем его к источнику данных, который запоняем в OnBeforePrint:
select 1 union select 2 ... unoin select n
где n - кол-во нужных вертикальных линий.
← →
Светлана (2005-01-22 16:45) [15]очень интересная идея :)))
Только вот поконкретней объясни, плиз. Не пойму, что у тебя за SELECT 1 UNION ?.... И у кого мы заполняем в OnBeforePrint?
← →
Соловьев © (2005-01-22 16:59) [16]>Не пойму, что у тебя за 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 17:06) [17]Спасибо, сейчас попробую...
Страницы: 1 вся ветка
Текущий архив: 2005.02.20;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.039 c