Задать размеры страницы
Столкнулся с проблемой, и не знаю даже с какой стороны подойти. \
Делаю отчет, у Мастер Бенда StartNewPage=true, то есть для каждой мастер записи все детейлы на своей странице. Отчет строится с графикой, кол-во которой зависит от осдержимого detail.
Изначально я сделал, что расситывается максимальная ширина страницы, которая понадобитьмя для построения и она задается странице. Но от заказчика поступило требование, что бы для каждой страницы отчета была своя ширина. Да и странно видеть что на листе формата А3 печатается то, что войдет на А5. Но как выставить ширину для конкретной сформированной страницы отчета? Обработчик TfrxReportPage.OnBeforePrint вызывается только один раз, хотя страниц формируется много. По идее надо получить в неком событии ДО печати доступ к текущей печатающейся странице и выставить ширину ее, но как? С высотой все решилось просто - ствойство страницы EndlessHeight=true
Делаю отчет, у Мастер Бенда StartNewPage=true, то есть для каждой мастер записи все детейлы на своей странице. Отчет строится с графикой, кол-во которой зависит от осдержимого detail.
Изначально я сделал, что расситывается максимальная ширина страницы, которая понадобитьмя для построения и она задается странице. Но от заказчика поступило требование, что бы для каждой страницы отчета была своя ширина. Да и странно видеть что на листе формата А3 печатается то, что войдет на А5. Но как выставить ширину для конкретной сформированной страницы отчета? Обработчик TfrxReportPage.OnBeforePrint вызывается только один раз, хотя страниц формируется много. По идее надо получить в неком событии ДО печати доступ к текущей печатающейся странице и выставить ширину ее, но как? С высотой все решилось просто - ствойство страницы EndlessHeight=true
Комментарии
Задать TfrxReport.Dataset = Master датасет и подправить шаблон отчёта для формирования отдельного отчёта для каждой записи Master датасета
Вариант 2:
Корректировать размер страниц TfrxReport.PreviewPages уже сформированного отчёта
Вариант 3:
Попробовать использовать EndlessPageWidth
P.S. Я бы заказчика с такими требованиями послал. Он и бумагу разную в принтер ставить будет?
А как сделать второй вариант?? Никогда такого даже и не пытался, разве можно?
EndlessPageWidth я само собой использовал. Это не помогает. В ширину страница растет только когда на ней есть вертикальные бенды, они ее и растягивают. У меня с ними вообще ничего не получилось и я забил на них.
Пыталсчя бороться в высотой стараницы так же, EndlessHeight работает исправно, но дело в том, что высота старницы должна быть кратна А4 то есть 297мм. Что бы потом на сформированную страницу натянуть необходимую форматку, типа А4*5. Хотел сделать это растягиваеним футера, но вчера выяснил, что в событии футера BefirePrint его Top то же самое число что и при разработке очета. Пришел в тупик. Как узнать реальную, перед печатью футера высоту получившися страницы?
p.s. для заказчика формируется огромная pdf в которой и чертежи на формате А0 могут быть и все отчеты, даже всякие бирки на мельчайших форматах быть могут. У них такое требование в оформлению докментации проекта, что бы был ОДИН файл. Удвивительно, но это есть.
для этого я зациклил отчет с помощью Report.DataSet
в каждой итерации управляем какая страница печатается(или попробовать менять размер страницы)
к примеру 3 странные страницы должны по очереди напечататься 100 раз
итерация 1: печатаем страницу титл
итерация 2: печатаем 1ую нестандартную
итерация 3: печатаем 2ую нестандартную
итерация 3: печатаем 3ую нестандартную
итерация 5: печатаем 3ую нестандартную
итерация 6: печатаем 3ую нестандартную
итерация 7: печатаем 2ую нестандартную
....
итерация 101: печатаем 1ую нестандартную
итерация 102: печатаем страницу подвал
или я бы сделал так
итерация 1: печатаем страницу титл, печатаем 1ую нестандартную
итерация 2: печатаем 2ую нестандартную
итерация 3: печатаем 3ую нестандартную
итерация 4: печатаем 3ую нестандартную
итерация 5: печатаем 3ую нестандартную
итерация 6: печатаем 2ую нестандартную
....
итерация 100: печатаем 1ую нестандартную, печатаем страницу подвал