Помогите ещё одному новичку с Freereport. Пожалуйста!
AlexandrST
Московская область
Здравствуйте!
Помогите новичку в FreeReports!
Ситуация:
Delphi7. Форма. На форме 15 закладок (PageControl). На каждой закладке свои модули расчётов и оформления. То есть набор Edit, label, Image. Вводятся данные - происходят расчёты. Все 15 закладок должны выводиться на печать в виде сегментов (по 5 на листе). Причём выводимые сегменты выбирает юзер.
У меня несколько непоняток:
1) Как лучше организовать структуру отчёта? На одном отчёте не получается - каждая закладка на отчёте идёт отдельным бэндом и все 15 естественно не умещаются на одном листе в дизайнере. Я пробовал сделать SubReports, но остановился на композитном отчёте и на каждую закладку создал по своему отчёту на котором один бэнд-сегмент с оформлением. Наверно слишком запутанно, но по-другому не придумал, подскажите пожалуйста.
2) В некоторых сегментах (на бэндах) нужно скрывать некоторые элементы в зависимости от условий. Делаю:
3) Когда делаю отчёт с подотчётами (SubReports), то не могу "дотянуться" до объектов на под-отчётах. То есть, если объект memo1 находится на SubReport, то
Заранее огромное спасибо за помощь. Помогите пожалуйста подневольному прогеру-самоучке
Помогите новичку в FreeReports!
Ситуация:
Delphi7. Форма. На форме 15 закладок (PageControl). На каждой закладке свои модули расчётов и оформления. То есть набор Edit, label, Image. Вводятся данные - происходят расчёты. Все 15 закладок должны выводиться на печать в виде сегментов (по 5 на листе). Причём выводимые сегменты выбирает юзер.
У меня несколько непоняток:
1) Как лучше организовать структуру отчёта? На одном отчёте не получается - каждая закладка на отчёте идёт отдельным бэндом и все 15 естественно не умещаются на одном листе в дизайнере. Я пробовал сделать SubReports, но остановился на композитном отчёте и на каждую закладку создал по своему отчёту на котором один бэнд-сегмент с оформлением. Наверно слишком запутанно, но по-другому не придумал, подскажите пожалуйста.
2) В некоторых сегментах (на бэндах) нужно скрывать некоторые элементы в зависимости от условий. Делаю:
Page.FindRTObject('Memo1').Visible:=false;
Page.ShowBandByName('MasterData1');
Но возникает проблема. Когда я формирую композитный отчёт, то все 15 отчётов-закладок со свойством страницы "Пристыковывать к предыдущему отчёту вплотную". Но при добавлении какой-либо информации в событие ManualBuild отчёта, он не пристыкрвывается, а печатается на новой странице каждый. Надо добавлять какую-то строку в ManualBuild для пристыковки?3) Когда делаю отчёт с подотчётами (SubReports), то не могу "дотянуться" до объектов на под-отчётах. То есть, если объект memo1 находится на SubReport, то
Page.FindRTObject('Memo1').Visible:=false;
выдаёт ошибку, что такой объект не найден, а видит лишь объекты на основной странице. Как обратиться к объекту на SubReport'е?Заранее огромное спасибо за помощь. Помогите пожалуйста подневольному прогеру-самоучке
Комментарии
У Page есть свойство LargeDesignHeight, поставьте в true.
Или я просто не там ищу.
И уже эти переменные передавать из программы отчету.
Пример поиска переменных (правда на фастрепорте и на С++):
Получается, что я программно этой строкой могу "дотянуться" только до основного листа отчёта.
А как мне "дотянуться" до объектов на Sub-листах?
затем сделаем ShowReport
ТО мы таким образом будем управлять видимостью элементов на подотчетах.
А почему при составлении композитного отчёта отчёты отдельные не пристыковываются друг к другу если я делаю ManualBuild бэндов на отчётах? Хотя галочка "Печатать вплотную к предыдущему отчёту" стоит, но перестаёт работать, когда я сам управляю видимостью бэндов в ManualBuild...Но если ManualBuild пустой, то всё ок - пристыковываются.
Может эту функциональность можно перенести в другие события?
формируется порядок показа бэндов на отчёте и их показа вообще.
Или например: Это видимость объекта на бэнде в зависимости от условия.
Выше мне предложили выполнять видимость через скрипт на отчёте.
Вообще команды с Page.хххх можно использовать только в событии OnManualBuild кажется.
Такой вопрос. Что вам мешает перед отображением отчета и после создания его объекта присвоить значения видимости элементов? Зачем вы заменяете обработчик события???
В скрипте всегда создается функция без названия (только begin end) там можно реализовать ваши алгоритмы видимости.
У меня нарисован отчёт с подотчётами на которых бэнды. Я управляю видимостью бэндов на подотчётах тем самым формирую основную страницу отчёта. Но мне ещё надо управлять видимостью элементов на бэендах. Для этого я прописываю в OnManualBuild условия видимости. В других событиях эта запись не осуществима (Page.FindRTObject('memo1').Visible:=false). Предложен вариант сделать через скрипт в отчёте. А какие ещё есть варианты? В каком событии отчёта можно прописать условия видимости и каким образом?
То есть если объекты и бэнды находятся на главной странице отчёта, я делаю: А потом по кнопке на форме:
Научился только так.
В до пишите и др. операции, при этом не надо составлять последовательность отображения отчета, кокторая у вас и так уже выстроилась при его создании.
Если вы хотите спрятать какой-либо бенд, там же задайте ему свойство Visible = false
А сбивается ваше отображение т.к. вы делаете После этого необходимо у етой NewPage выставить все свойства вручную...
Пока вопросов больше не имею. Спасибо всем за ответы, особенно aseroff.
Будут вопросы - обращусь. Знаю, что поможете
Спасибо!