Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Повышение производительности: получение высоты полных данных из MasterData в шаблоне FastReport в Delphi

Delphi , Базы данных , Отчеты

При работе с отчетами в FastReport для Delphi может возникнуть потребность получить высоту полных данных из MasterData. Однако, стандартный подход с использованием события OnAfterCalcHeight может привести к тому, что данные будут обрезаться между страницами отчета. В данной статье мы рассмотрим, как решить эту проблему и повысить производительность при получении высоты полных данных из MasterData.

Описание проблемы

При использовании события OnAfterCalcHeight MasterData для получения высоты полных данных, отчет может обрезать данные между страницами. Это происходит, когда свободное пространство на странице меньше, чем сумма высоты GroupHeader и MasterData. В результате, часть данных может не отображаться на странице, что приводит к некорректному представлению отчета.

Альтернативный ответ

Одним из решений этой проблемы может быть использование двухпроходного отчета. На первом проходе storing высоты первой MasterData для каждой группы в переменной отчета, а затем используйте это значение в событии OnBeforePrint группы на втором проходе. Однако, этот подход может значительно замедлить создание отчета.

Подтвержденный ответ

Решением проблемы является правильный порядок событий. Во-первых, создайте глобальные переменные double для полной высоты MasterData и другой высоты компонентов.

var
  masterdata_Height, GroupHeader2_Height: double;

Затем, в событии OnAfterCalcHeight MasterData, просто присвойте значение высоты MasterData соответствующей переменной.

masterdata_Height := masterdata.Height;

Аналогично, сделайте то же самое для других заголовков FastReport.

Наконец, добавьте условие в событии OnBeforePrint всех заголовков:

if engine.FreeSpace <= (masterdata_Height + GroupHeader2_Height) then
  engine.NewPage;

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

Используя этот подход, вы сможете получить высоту полных данных из MasterData в шаблоне FastReport в Delphi, не жертвуя производительностью.

Создано по материалам из источника по ссылке.

При работе с отчетами в FastReport для Delphi для получения высоты полных данных из MasterData необходимо правильно использовать события, чтобы избежать обрезания данных между страницами и повысить производительность.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Отчеты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:39:45/0.0032689571380615/0