Задать размеры страницы

отредактировано 07:35 Раздел: FastReport 4.0
Столкнулся с проблемой, и не знаю даже с какой стороны подойти. \
Делаю отчет, у Мастер Бенда StartNewPage=true, то есть для каждой мастер записи все детейлы на своей странице. Отчет строится с графикой, кол-во которой зависит от осдержимого detail.
Изначально я сделал, что расситывается максимальная ширина страницы, которая понадобитьмя для построения и она задается странице. Но от заказчика поступило требование, что бы для каждой страницы отчета была своя ширина. Да и странно видеть что на листе формата А3 печатается то, что войдет на А5. Но как выставить ширину для конкретной сформированной страницы отчета? Обработчик TfrxReportPage.OnBeforePrint вызывается только один раз, хотя страниц формируется много. По идее надо получить в неком событии ДО печати доступ к текущей печатающейся странице и выставить ширину ее, но как? С высотой все решилось просто - ствойство страницы EndlessHeight=true

Комментарии

  • gpigpi
    отредактировано 07:35
    Вариант 1:
    Задать TfrxReport.Dataset = Master датасет и подправить шаблон отчёта для формирования отдельного отчёта для каждой записи Master датасета
    Вариант 2:
    Корректировать размер страниц TfrxReport.PreviewPages уже сформированного отчёта
    Вариант 3:
    Попробовать использовать EndlessPageWidth
    P.S. Я бы заказчика с такими требованиями послал. Он и бумагу разную в принтер ставить будет?
  • отредактировано 07:35
    gpi написал: »
    Вариант 1:
    Задать TfrxReport.Dataset = Master датасет и подправить шаблон отчёта для формирования отдельного отчёта для каждой записи Master датасета
    Вариант 2:
    Корректировать размер страниц TfrxReport.PreviewPages уже сформированного отчёта
    Вариант 3:
    Попробовать использовать EndlessPageWidth
    P.S. Я бы заказчика с такими требованиями послал. Он и бумагу разную в принтер ставить будет?
    Первый вариант хорош, если есть возможность писать в дельфе или еще где код отдельный. Этого хочется избежать, то есть все делать в скрипте. А там что то я не очень понимаю как это сделать, ведь движок ФР сам управляет датасетами привязанными к бендам.

    А как сделать второй вариант?? Никогда такого даже и не пытался, разве можно?


    EndlessPageWidth я само собой использовал. Это не помогает. В ширину страница растет только когда на ней есть вертикальные бенды, они ее и растягивают. У меня с ними вообще ничего не получилось и я забил на них.


    Пыталсчя бороться в высотой стараницы так же, EndlessHeight работает исправно, но дело в том, что высота старницы должна быть кратна А4 то есть 297мм. Что бы потом на сформированную страницу натянуть необходимую форматку, типа А4*5. Хотел сделать это растягиваеним футера, но вчера выяснил, что в событии футера BefirePrint его Top то же самое число что и при разработке очета. Пришел в тупик. Как узнать реальную, перед печатью футера высоту получившися страницы?

    p.s. для заказчика формируется огромная pdf в которой и чертежи на формате А0 могут быть и все отчеты, даже всякие бирки на мельчайших форматах быть могут. У них такое требование в оформлению докментации проекта, что бы был ОДИН файл. Удвивительно, но это есть.
  • gpigpi
    отредактировано 07:35
    написал:
    А как сделать второй вариант?? Никогда такого даже и не пытался, разве можно?
    Пройтись по всем TfrxReport.PreviewPages и установить PaperHeight, PaperWidth
    написал:
    Как узнать реальную, перед печатью футера высоту получившися страницы?
    Engine.CurY + TfrxReportPage.TopMargin
  • отредактировано October 2014
    Каждую новую страницу с нестандартным размером нужно печатать отдельно
    для этого я зациклил отчет с помощью 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ую нестандартную, печатаем страницу подвал

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.