Бэнды FastReport .NET

30.08.2017

Страница отчета в FastReport.Net обязательно должна содержать хотя бы один бэнд – контейнер для объектов. Признаюсь, при первом знакомстве с FastReport мне показался этот механизм надуманным. Почему бы не размещать объекты прямо на страницы без дополнительных контейнеров? Но осознав всю прелесть применения бэндов, я не представлял, как бы это работало иначе. Контейнеры четко разделены по функциональности и порядку отображения. Заголовки всегда будут вверху, данные посредине, а итоги внизу. Мы можем как угодно выстроить данные в бэнде и это не потребует создания таблиц специального вида. Для того, чтобы научиться работать в FastReport.Net вам нужно изучить бэнды. Это основа основ.

Итак, в этой статье мы рассмотрим какие в FR.Net есть бэнды, их назначение, порядок вывода при построении, особенности поведения.

Приведем список всех доступных бэндов:

  • Заголовок отчета – выводится один раз в самом начале отчета, однако есть возможность выводить его после Заголовка страницы. Не знаю правда зачем это;
  • Подвал отчета - выводится в самом конце отчета, но перед подвалом страницы;
  • Заголовок страницы – выводится в начале каждой страницы;
  • Подвал страницы – выводится в конце каждой страницы;
  • Заголовок колонки – выводится вверху каждой колонки;
  • Подвал колонки – выводится в конце каждой колонки;
  • Данные – самый главный бэнд, на мой взгляд. Потому что он умеет выводить все данные из источника. То есть он выводится для каждой строчки данных в источнике, к которому он подключен. Бэнд «Данные» выводится после всех заголовочных бэндов;
  • Заголовок данных – выводится один раз перед бэндом «Данные», к которому он привязан (ведь может быть много бэндов «Данные» и для каждого можно добавить заголвок данных);
  • Подвал данных – выводится один раз непосредственно после бэнда «Данные», к которому он привязан;
  • Заголовок группы – выводится после заголовка страницы или заголовка колонки, но перед бэндом «Данные»;
  • Подвал группы – выводится после бэнда «Данные»;
  • Дочерний – может быть создан для любого бэнда. Он наследует тип родительского бэнда;
  • Фоновый – просто фон для каждой страницы отчета.

Вот так бэнды выстроены в дизайнере на странице отчета:

 

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

С заголовочными бэндами все более-менее понятно. Они предназначены для отображения заголовков отчета и заголовков колонок таблиц:

 

Подвальные бэнды используют для вывода итоговой суммы по данным, количества строк или номера страницы.

Наиболее интересен бэнд «Данные». Как я отметил раньше, он подключается к источнику данных:

 

И отображает данные только из выбранной таблицы. Если вам нужно выводить данные из нескольких таблиц, придется создать другие бэнды «Данные». Из рисунка видно, что помимо выбора источника данных, доступна сортировка и фильтрация. Это очень удобно и избавляет нас от необходимости сортировать и фильтровать данные при создании источника. К тому же, условие фильтрации может содержать параметр, значение которого мы передадим из диалоговой формы или через URL (для веб отчетов).

А теперь об удобстве использования контейнеров-бэндов. Мы можем вывести данные из таблицы так:

 

Или вот так:

 

В первом случае мы вывели традиционный список. А во втором скомпоновали поля в карточку сотрудника. В обоих случаях это всего лишь одна строка данных. Бэнд позволяет там свободно размещать объекты внутри себя.

Давайте обратим внимание на простой список:

 

Как вы видите, часть данных перенесена на другую строку, но сверху выводится следующая строка. Вы можете установить для бэнда свойство «Может расти»:

 

Такое же свойство включите для текстовых объектов, чьи данные не отображаются полностью:

 

Теперь данные выводятся в полном объеме. Бэнд сам подбирает высоту в зависимости от размера объектов, расположенных внутри.

У объектов есть множество других свойств, отвечающих за отображение, но это тема для отдельной статьи.

В контексте бэнда «Данные» хочу рассказать о «Дочернем» бэнде. Обычно дочерний бэнд используется в паре именно с бэндом «Данные». Такая связка применяется для отчетов типа «Главный – Подчиненный». При этом используются связанные таблицы:

 

Как видно из шаблона, бэнд «Данные» имеет подчиненный бэнд «Данные». Таким образом обеспечивается отображение подчиненного бэнда «Данные» каждый раз после главного. Для каждой записи таблицы Categories будет выведены соответствующие ключевому полю записи таблицы Products.

Вот так выглядит рассмотренная связка при отображении:

 

Если вы будете выводить таблицу Products не в дочернем бэнде «Данные», а в отдельном, то получите такую картину:

 

То есть сначала будут отображены все бэнды таблицы Categories, а затем все бэнды таблицы Products.

Теперь пара слов о колонках. Бэнд «Данные» можно настроить на отображение данных по колонкам. При этом будут использоваться бэнды «Заголовок колонки» и «Подвал колонки».

Например, выставим в свойствах страницы отчета количество колонок 2:

И посмотрим на результат:

 

Количество колонок не ограничено.

У страницы отчета есть еще 2 интересных свойства: «Бесконечная ширина» и «Бесконечная высота» отчета. Бесконечная ширина актуальна для растущих вширь матриц. В принципе матрицы и в высоту растут. Так, что включаем оба этих свойства и получаем гигантскую матрицу:

 

Чтобы разглядеть данные, придется распечатывать ее на плоттере. Похоже именно для печати на крупном формате и придумали эти свойства.

Переходим к бэндам «Заголовок группы» и «Подвал группы». Обычно они используются парно. Когда вы добавляете «Заголовок группы», автоматически добавляется и подвал, а между ними бэнд «Данные».

Как вы поняли из названия бэндов, они формируют группы. Для группировки данных тлебуется задать условие:

 

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

 

Да, вы, наверное, уже устали читать, но осталось совсем немного. Фоновый бэнд. Используется для отображения фоновой картинки, заливки или градиента. Выводится на каждой странице отчета. Впрочем, есть возможность настройки страниц, для которых он должен отображаться:

 

Высота закрашиваемой части страницы настраивается растягиваем бэнда.

На этом, пожалуй, все. Мы рассмотрели основные моменты применения бэндов в FastReport.Net. Надеюсь, эта информация была понятна и полезна для вас. 

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.