Установка свойства StartNewPage до OnBeforePrint в FastReport 5.0
При работе с отчетами в FastReport 5.0 может возникнуть ситуация, когда вам необходимо установить свойство StartNewPage дочернего банда из кода на основе данных из базы данных. Это часто используется для принудительного разрыва страницы, если это необходимо. Однако, если вы пытаетесь изменить это свойство в событии OnBeforePrint, оно может быть проигнорировано на первой странице каждого отчета, а затем начинает работать на страницах после первой. В этом материале мы рассмотрим, как установить это свойство еще до OnBeforePrint.
Почему свойство StartNewPage не работает в OnBeforePrint?
Свойство StartNewPage устанавливает флаг для начала новой страницы в следующем банде. Однако, когда отчет начинает печать, FastReport обрабатывает банды в определенном порядке, и OnBeforePrint срабатывает уже после того, как банд был полностью обработан. Поэтому, если вы пытаетесь установить StartNewPage в OnBeforePrint, FastReport может не учитывать это изменение для первого банда.
Как установить свойство StartNewPage раньше, чем OnBeforePrint?
Чтобы установить свойство StartNewPage до OnBeforePrint, вы можете использовать событие OnAfterPrint главного банда (например, TfrxMasterData). В этом событии вы можете проверить данные, которые влияют на разрыв страницы, и установить свойство StartNewPage дочернего банда.
Вот пример кода на Object Pascal, который демонстрирует, как это сделать:
procedure TfrxReport1.frxMasterDataAfterPrint(Sender: TfrxComponent);
var
MyData: string;
begin
// Получите данные из базы данных или других источников
MyData := 'YourData';
// Проверьте данные и установите свойство StartNewPage дочернего банда
if MyData = 'SomeCondition' then
frxChildBand1.StartNewPage := True;
end;
В этом примере мы используем событие OnAfterPrint главного банда frxMasterData. Внутри этой процедуры мы получаем данные из источника (в данном случае, это просто строка, но это может быть любой тип данных) и проверяем их. Если данные соответствуют определенному условию, мы устанавливаем свойство StartNewPage дочернего банда frxChildBand1 в True.
Таким образом, вы можете установить свойство StartNewPage дочернего банда до того, как отчет начнет печать, что решит проблему с игнорированием этого свойства на первой странице отчета в событии OnBeforePrint.
Заключение
Установка свойства StartNewPage дочернего банда в FastReport 5.0 может быть сложной задачей, если вы пытаетесь сделать это в событии OnBeforePrint. Однако, используя событие OnAfterPrint главного банда, вы можете установить это свойство раньше, чем отчет начнет печать, что решит проблему с игнорированием этого свойства на первой странице отчета.
Материал описывает решение проблемы с установкой свойства `StartNewPage` дочернего банда в FastReport 5.0 до события `OnBeforePrint`, чтобы принудительно разрывать страницу, когда это необходимо. Для этого предлагается использовать событие `OnAfterPrint`
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.