При работе с FastReport 4.7.31 в Turbo Delphi Pro у некоторых пользователей возникает проблема с отображением всех страниц отчета в режиме предварительного просмотра. В данной статье мы рассмотрим причину этой проблемы и предложим решение.
Описание проблемы
При использовании метода ShowReport отчета frxMyReport в коде показывается только последняя подготовленная страница, а не все страницы, как при использовании метода Print. Это происходит из-за того, что метод ShowReport по умолчанию очищает последний отчет и готовит новый отчет перед отображением.
Подтвержденный ответ
Решением этой проблемы является использование метода ShowPreparedReport вместо ShowReport. Метод ShowPreparedReport отображает уже подготовленный отчет, не очищая последний. Таким образом, все страницы отчета будут отображены в режиме предварительного просмотра.
Пример кода, исправляющий проблему:
procedure TfrmMain.MyReportPrint;
var
MDate: TDate;
S, myfile: string;
firstone: boolean;
begin
firstone := true;
MDate := Date1;
while MDate < IncDay(Date2, 1) do
begin
DateTimeToString(S, 'yyyymmdd', MDate);
myfile := 'm' + S + '.dbf';
if FileExists(DataPath + '\' + myfile) then
begin
tblPS.Close;
tblPS.TableName := myfile;
frxMyReport.PrepareReport(firstone);
firstone := false;
end;
MDate := IncDay(MDate, 1);
end;
if ShowPreview then
frxMyReport.ShowPreparedReport
else
frxMyReport.Print;
end;
Альтернативный ответ
Если по какой-то причине невозможно использовать метод ShowPreparedReport, можно передать параметр ClearLastReport методу ShowReport, установив его значение в false. Это предотвратит очистку последнего отчета перед подготовкой нового отчета. Однако, этот способ все равно не гарантирует отображение всех страниц отчета в режиме предварительного просмотра, так как подготовка отчета происходит каждый раз перед отображением.
Заключение
При работе с FastReport 4.7.31 в Turbo Delphi Pro для отображения всех страниц отчета в режиме предварительного просмотра следует использовать метод ShowPreparedReport. Если это не возможно, можно передать параметр ClearLastReport методу ShowReport, установив его значение в false. В любом случае, важно понимать, как работают методы отображения отчета в FastReport, чтобы добиться желаемого результата.
Контекстом является обсуждение проблемы отображения всех страниц отчета в FastReport 4.7.31 в Turbo Delphi Pro и предложение решения, которое заключается в использовании метода `ShowPreparedReport` вместо `ShowReport`.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.