Copyright: © 2008 Analytica & Geosystem


Возможности программы

Система Digitals Reports открывает пользователю широкие возможности по построению и генерации отчётов. Отчёты формируются на основании шаблонов, каждый из которых хранится на диске в отдельном файле, что обеспечивает их мобильность.

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

•	Бэнд-ориентированный генератор отчетов.

•	Встроенный мощный дизайнер.

•	Preview (предварительный просмотр) как в MS Word.

•	Скорость работы сравнима с QuickReport.

•	Неограниченное количество страниц сформированного отчета.

•	Многостраничные отчеты; составные (композитные) отчеты; вложенные отчеты; группы; многоколоночные

отчеты; master-detail-detail отчеты; cross-tab отчеты; двухпроходные отчеты.

•	Полный контроль над процессом печати, поддержка всех типов бумаги.

•	Набор наиболее популярных компонентов: Текст, Линия, Рисунок, Фигура, OLE объект, RichText, Диаграмма, Штрих-код и др.

•	Поиск текста в сформированном отчете.

•	Редактирование сформированного отчета.

•	Встроенный интерпретатор Pascal-подобного языка для управления процессом построения отчета.

•	Набор визуальных компонентов для создания диалоговых форм;

•	Набор невизуальных компонентов для создания таблиц, запросов и баз данных;

•	Работа как с Database - ориентированными источниками данных, так и с любыми данными.

•	Форма отчета может храниться во внешнем файле.

•	  Функциональность может быть расширена за счет написания собственных компонент - визуальных объектов, мастеров, библиотек функций.


Принципы работы с программой

При выполнении операций в Digitals Reports используются стандартные соглашения и принципы, принятые для Windows-программ.

Ниже перечислены основные из них:

1) Для получения контекстной помощи по любому элементу программы (пункт меню, диалог и т.д.) нажмите клавишу F1 в то время, как этот элемент активизирован. Если окно имеет кнопку Help, используйте ее.

2) Большинство действий в программе: выбор пунктов меню, кнопок на панели инструментов, документов, типов отчетов производится нажатием левой кнопки мыши.

Двойной щелчек мышью над сформированным документом вызывает редактирование текущей страницы этого документа.

3) Правая кнопка мыши в большинстве случаев вызывает контекстное меню, которое содержит основные операции, применимые к сформированным документам (масштабирование, редактирование сформированного документа).

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


Подготовка объектов для выдачи в Генератор отчетов

В первую очередь необходимо собрать объекты в программе Digitals (Ged.exe). Это как правило кварталы, участки, угодия и пр. После того, как необходимые объекты на карте созданы и заполнены параметры, необходимые для отчета, определитесь, на какие именно объекты необходимо формировать отчётность. Это могут быть отдельные кадастровые участки, группы участков. Определившись в выборе, пометьте на карте один или несколько объектов, на который(-ые) будет формироваться отчётность, например "In4_Ділянка". Допускается выделение нескольких объектов, если это предусматривает структура отчётной документации. После того, как нужный(-ые) объект(-ы) будут помечены, нажмите пункт меню "Сервис|Генератор отчетов". После этого система перейдёт в модуль генератора отчётов.

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

Примечание1: при переходе в модуль генератора отчётов в скрытом виде формируется отчет типа "Комбинированный список" со всеми настройками, которые хранятся в файле Reports.rep, расположенном в папке Digitals\Templates\. Если настройки по умолчанию вас не устраиваю, то их можно изменить. Для этого пометьте участок(-ки) и выберите пункт меню Сервис|Отчет, тип отчета "Комбинированный список", настройте его и сохраните настройки в файле под именем Reports.rep в папке Digitals\Templates\.

Примечание2: для корректной работы Digitals Reports первым параметром всегда должен быть параметр "Площадь" с кодом параметра "FP0", иначе появится соответствующее предупреждение и подсказка о неверном формате. Это автоматически соблюдается для типа отчета "Комбинированный список" (см. Примечание 1).

Примечание3: если граница земельного(-их) участка (-ов) совпадает с границей квартала, необходимо в Digitals присвоить слою квартала статус ("видимый"), чтобы данный слой не принимал участия при формировании отчета как объект.

Примечание4: если хотя бы для одного из помеченных участков будет отсутствовать имя владельца (соотвествующий  емупараметр указывается в Настройках, по умлчанию - дескриптор NM), то генератор отчетов присвоит этому объекту имя вида:

Объект <ID объекта>

где <ID объекта> - идентификатор объекта, соответствующий значению параметра № -6 (ID объекта). Например:

Объект 475

Если же среди помеченных объектов (участков) не найдены объекты с одинаковым именем владельца, то будет выдано предупреждение и Пофамильный отчет будет отключен.


Генератор отчетов системы "Digitals"

Генератор отчётов представляет собой окно, разделённое на четыре основные части. В верхней части окна находятся строка меню и панели инструментов с быстрыми кнопками, дублирующими основные пункты меню. Левая сторона окна состоит из двух частей: Верхняя часть Шаблоны документов - перечень формируемой отчётной документации, сгруппированной по тематике представленных документов. Нижняя часть Типы отчетов - список основных типов отчетов, на которые будут формироваться документы. В этом окне есть возможность выбрать необходимый вид отчета щелчком мыши на названии. Ниже строки меню и панели инструментов находится список фамилий землепользователей (только для одиночного и пофамильного типов отчетов).

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

Сам процесс формирования отчётов для пользователя проходит предельно просто: выберите нужный документ в списке шаблонов документов и он появится в окне предварительного просмотра. Для одиночного и пофамильного типов отчетов возможен также выбор фамилии землепользователя из выпадающего списка. Если страниц отчёта несколько, перемещайтесь между ними с помощью мыши или полос прокрутки, а также с помощью кнопок перемещения между страницами на панели инструментов или используя меню Навигация. Также на панели инструментов находятся кнопки масштабирования страницы по ширине, по высоте, на две страницы. С помощью кнопки Предопределённый масштаб вы можете установить масштаб страницы отчёта в процентах от реального.

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


Редактор пакетов документов

Для того, чтобы в списке Шаблоны документов все документы имели чёткие названия и были правильно упорядочены, генератор отчётов использует пакетную систему. Это означает, что на диске шаблон для конкретного документа может иметь любое название (например, Katalog.frf), однако же в пакете (группе) этот документ имеет более   понятное название (например, Каталог координат) и связан со своим шаблоном на диске. Кроме того, пакеты, группируют документы по тематике. Пользователь может сам редактировать дерево пакетов и ссылки на шаблоны документов с помощью Редактора пакетов документов. Для перехода в редактор выберите пункт меню Дизайнер|Пакеты документов.

В окне редактора представлена иерархическая структура пакетов и документов, содержащихся в них. С помощью кнопки Создать категорию пользователь может создать новый пакет (группу). Для добавления в группу документа необходимо пометить любой элемент этой группы (название группы или документ) и нажать кнопку Создать документ. После того, как документ создан, необходимо установить связь между этим документом и файлом шаблона на диске. Для этого выберите закладку с соответствующей надписью типа отчета и введите путь к файлу шаблона или при помощи кнопки с изображением папки в нижней части формы в появившемся окне выберите на диске файл шаблона для этого документа. Если файл выбран успешно, в окне рядом с изображением папки будет прописан путь к файлу шаблона. Если файл шаблона используется один для всех типов отчета, то необходимо для каждой закладки указать один и тот же файл шаблона на диске. Для того, чтобы изменить файл шаблона, снова нажмите кнопку с изображением папки и повторите операцию выбора. Для удаления пакета или документа в пакете выберите его с помощью мыши и нажмите кнопку Удалить.

В случае если пользователь создаёт новый пакет или документ, их имена первоначально устанавливаются в Категория № и Документ № соответственно. Для изменения имени необходимо пометить его и клавишей F2 или щелчком мыши перейти врежим редактирования. Для сохранения изменений в пакетах и выхода из редактора нажмите кнопку ОК в нижней части окна редактора. Чтобы отменить произведенные изменения используем кнопку Cancel, при этом изменения сохранены не будут.

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

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


Создание шаблонов документов

Все документы и отчёты в генераторе формируются на основании шаблонов, которые могут в любой момент быть изменены пользователем. Шаблон - это образ будущего документа, содержащий в себе различные компоненты и ссылки (подстановки), необходимые для формирования полноценного отчёта. Каждый такой шаблон сохраняется на диске в отдельном файле с расширением *.frf. Все шаблоны создаются и редактируются в Дизайнере документов, который в свою очередь является неотъемлемой частью генератора FastReport. Поэтому перед тем, как создавать или редактировать шаблоны, обязательно ознакомьтесь со следующим разделом руководства.

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

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

При необходимости назначить источники данных для бэндов, воспользовавшись пунктом меню Файл|Словарь данных, закладка источники данных для бэндов. В генераторе отчетов Digitals Repotrs существуют такие источники данных:

1) ObjDataset - в нем хранятся данные (параметры) об объектах, которые были предварительно помечены перед запуском генератора отчетов.

2) ExplDataset - в нем хранятся данные (параметры) о внутренних объектах помеченных объектов (экспликации).

3) CatDataset - в нем хранятся данные (каталоги координат) помеченных объектов. Состав каталога координат зависит от установок программы "Digitals", из которой загружаются эти данные. Настройки этих данных находятся по умолчанию в списке констант закладки Главная глобальных настроек программы "Digitals" (Сервис|Настройки), константа CoordinateReport или в диалоговом окне Формирование отчета, меню Сервис|Отчет, выпадающий список Формат. Приоритет имеет выпадающий список Формат.

Если есть необходимость изменить порядок следования каталога координат, необходимо создать отчет типа Комбинированный список с нужным форматом каталога координат, предварительно пометив один или несколько объектов и сохранить данные настройки в файле \Digitals\Templates\Reports.rep, нажав для этого кнопку Создать в диалоговом окне Формирование отчета.

Создав структуру отчета, используя средства Дизайнера (объекты, диалоговые формы, скрипты), далее необходимо установить ссылки на данные, которые должны соответствовать источнику данных, см. выше.

Структура ссылок в шаблоне для источника данных ObjDataset предельно проста. Необходимо знать какой это параметр: фиксированный (ID<=0) или обычный (ID>0) и знать ID этого параметра. Для фиксированного параметра с ID, например, -1  структура ссылки будет [FP1], а для обычного параметра с ID, например, 18 структура ссылки будет следующая [P18] (см. пример TehZvit.frf).

При необходимости, можно просмотреть коды параметров. Для этого сразу после запуска генератора отчетов можно вставить содержимое буфера обмена в любой текстовый или графический процессор (например Word, Excel и т.п.).

Структура ссылок в шаблоне для источника данных ExplDataset несколько отличается от стандартной схемы. В основном для внутренних объектов помеченных объектов (угодий), самым важным параметром является площадь и код параметра по форме 6-зем (дескриптор CN). Поэтому, чтобы сформировать площади для угодий с определенным кодом определенного участка, например, 05_Рілля, необходимо прописать [Expl05] (см. Expl.frf).

Структура ссылок в шаблоне для источника данных CatDataset отличается от остальных тем, что каталоги координат для помеченных объектов фактически уже сформированы в нужном виде и поэтому эти данные требуют только соответствующего оформления (форматирования). Обращение к данным каталогов координат фактически происходит через обращение к столбцам данных. Например: обращение к 1 столбцу выглядет как [Col0], ко второму [Col1], к n-му [Coln-1] (см. Catalog.frf).

Так же можно воспользоваться внутренними програмными переменными и функциями (см. Описание встроенных процедур и функций и Дополнительные функции), а также создать свои переменные и функции (см. Словарь данных Дизайнера отчетов). Также для обработки данных можно воспользоваться скриптами, которые выполняются перед обработкой данных, заключенных в квадратные скобки.

Примечание1: В случае если система не обнаруживает какую-то переменную, ссылку на данные как внутри объектов (текста, диаграммы), так и внутри выражений и скриптов, система выдаст ошибку с указанием на отсутствующую составляющую в данных или переменных. Поэтому необходимо внимательно следить за корректностью данных в квадратных скобках.


Редактирование шаблонов документов

Для того, чтобы перейти в режим дизайнера (правки) шаблона документа, сначала выберите его из списка Шаблоны документов, после чего нажмите кнопку Правка Шаблона на панели управления или пункт меню Дизайнер|Правка Шаблона. Шаблон документа откроется в Дизайнере для правки. После редактирования шаблона сохраните его и закройте Дизайнер.


Редактирование сформированного документа

Система предоставляет пользователю возможность редактирования уже сформированного отчёта в окне предварительного просмотра. Это, например, может оказаться полезным, если необходимо передвинуть или изменить некоторые надписи в документе, отредактировать текст и т. д.

Для того, чтобы сделать документ доступным для редактирования, необходимо дважды щёлкнуть по нему мышью в окне предварительного просмотра или вызвать щелчком правой кнопки мыши из контекстного меню соответствующую команду. После этого появится дизайнер FastReport, но редактироваться будет не шаблон, а   готовый сформированный документ. В этом режиме вы можете изменить необходимые параметры, перемещать текст и т.д. Закройте окно дизайнера по завершению редактирования. На вопрос о сохранении изменений нажмите кнопку Да. Теперь в окне предварительного просмотра будет представлен документ со всеми проделанными вами изменениями.

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


Этапы построения отчёта

Можно выделить следующие компоненты процесса построения типичного отчета:


Данные и параметры

Система Digitals Repoкts предоставляет в качестве данных для формирования отчётов:

1) Параметры объектов (помеченных слоев), количество и состав которых может варьироваться с каждой новой версией программы;

2) Каталоги координат каждого из объектов;

3) Параметры внутренних объектов помеченных объектов (экспликации), количество и состав которых может варьироваться с каждой новой версией программы;

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

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


Форма отчета

Форма отчета представляет собой набор элементов, описывающих то, как должен выглядеть готовый отчет. Для группировки элементов по их расположению в готовом отчете применяются бэнды (англ. band - полоска). Бэнды разделяются на два вида: служебные (заголовок отчета, страницы и пр.) и бэнды, образующие многострочную часть отчета (далее - дата-бэнды). Дата-бэнды подключаются к источникам данных, и их содержимое выводится столько раз, сколько имеется строк данных в источнике.

Для построения формы отчета используется визуальная среда разработки - дизайнер. В FastReport дизайнер - это средство разработки отчетов, сочетающее мощь, простоту и удобство использования. Интерфейс дизайнера выполнен на современном уровне с использованием панелей инструментов (toolbars), расположение которых можно изменять по своему вкусу. Для удобства манипуляции свойствами объектов отчета используется инспектор объектов.


Обработка

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

Реализовать подобную обработку можно, прибегнув к написанию обработчиков событий с применением встроенного языка - упрощенного аналога Pascal. Скрипты, написанные на этом языке, по сути дела, являются обработчиками событий, вызывающимися перед прорисовкой объектов. Это дает возможность выполнять довольно сложную обработку информации.

Возможности встроенного языка FastReport довольно широки. Из скрипта доступны все свойства и методы объектов отчета, а также переменные, поля таблиц БД. В скрипте можно создавать переменные и массивы, которые будут доступны во всем отчете. О возможностях встроенного языка говорит тот факт, что такая довольно сложная задача, как печать сумм группы в ее заголовке (сама сумма считается в подвале группы) средствами языка FastReport делается элементарно.


Готовый отчет

Готовый отчет представляет собой продукт деятельности ядра FastReport - то, что мы видим  в окне Предварительный просмотр. В отличие от многих генераторов отчетов, которые хранят содержимое страниц отчета в виде метафайла (т.е. изображения в формате EMF), в FastReport готовый отчет представлен набором объектов, описывающих содержимое каждой страницы отчета. Это позволяет модифицировать готовый отчет, загружая нужную страницу в дизайнер.

Окно предварительного просмотра FastReport отличается от используемых в других генераторах. В частности, в FastReport используется схема просмотра документа и навигации, принятая в Microsoft Word: в окне можно видеть сразу несколько страниц. Кроме того, реализована возможность поиска текста во всем документе.


Обзор

Название	Описание
Текст	Предназначен для отображения текста (однострочного или многострочного). В тексте могут присутствовать переменные, выражения или поля БД (обрамляются квадратными скобками).
Бэнд	Бэнд (англ. band - полоска). Как и во всех band-ориентированных генераторах отчетов, позволяет объединять объекты в группы (заголовок отчета, страницы, многострочная часть, подвал и пр.).
Рисунок	Предназначен для отображения рисунка в форматах BMP, ICO, WMF, EMF, JPG. Также способен отображать рисунок из BLOb-поля БД.
Вложенный отчет	Предназначен для создания вложенных отчетов. Будучи вставленным в отчет, приводит к созданию новой страницы, содержимое которой будет выведено вместо объекта при формировании отчета.
Линия	При выборе этого объекта курсор принимает форму карандаша. На странице отчета при этом можно рисовать вертикальные и горизонтальные линии.
Текст с тенью	Выполняет те же функции, что и объект "Текст". Кроме того, умеет отображать тень или градиентную заливку. Очень удобный объект для печати наклеек.
Штрих-код	Отображает данные в форме штрих-кода. Способен отображать данные из поля БД.
Фигура	Отображает один из четырех типов фигур: прямоугольник, прямоугольник с закругленными углами, эллипс и треугольник.
Флажок	Отображает крестик или галочку внутри прямоугольника.
RichText	Отображает форматированный текст (формат RTF). В тексте могут присутствовать переменные/выражения/поля БД. Также способен отображать данные из BLOb-поля БД.
OLE объект	Отображает объект OLE. Также способен отображать данные из BLOb-поля БД.
Диаграмма	Отображает данные в виде диаграммы.
RichText 2.0	Отображает форматированный текст с картинками и OLE-вставками (формат RTF 2.0). В тексте могут присутствовать переменные/выражения/поля БД. Также способен отображать данные из BLOB-поля БД.
Со временем состав объектов может пополняться, расширяя и совершенствуя функциональность системы Digitals Reports.


 Объект "Текст"

Представляет собой произвольным образом обрамленный прямоугольник с многострочным  текстом внутри. Задается цвет текста/заливка, тип рамки, толщина  рамки и цвет, все параметры шрифта текста, выравнивание текста внутри прямоугольника и ориентация текста (норм./90 градусов). Для этого предназначены панели инструментов "Текст" и "Прямоугольник":

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

Длина, см: [Длина] – текст (Длина, см:) и переменная ([Длина])

Длина, см: [Table1."Length_cm"] – текст и поле таблицы БД

Длина, см: [[Длина в дюймах] * 2.54] – текст и выражение с переменной

Длина, см: [Table1."Length_in" * 2.54] – текст и выражение с полем БД

Редактор объекта позволяет редактировать содержимое мемо, быстро вставлять переменные, выражения и поля доступных таблиц БД в мемо, а также редактировать скрипт. Для более удобной работы можно воспользоваться быстрыми клавишами: Insert - вставка переменной; клавиша Ctrl+Enter - аналог кнопки OK.

Кнопки на панели инструментов выполняют следующие функции: вызывает конструктор выражений (см. далее); [image] вызывает диалог вставки поля БД в текст (см. далее); [image] операции с буфером обмена; [image] включает или выключает перенос слов в длинных строках; [image] включает или выключает окно со скриптом; [image] кнопка "Отмена"; [image] кнопка "ОК".

Помимо основного редактора, имеется редактор, позволяющий выбрать формат отображения имеющихся в тексте переменных. Вызвать его можно либо из контекстного меню объекта, либо из инспектора объектов (свойство DisplayFormat).

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

Кроме того, для каждого типа может быть выбран произвольный формат, когда строка форматирования задается вручную (например, #,###,##0.000 для числа). Для этого необходимо в списке справа выбрать тип форматирования "Другой". Строки форматирования для каждого из типов описаны в справочной системе Delphi, раздел formatting strings (кроме булевского типа, где строка представлена в формате Значение1;Значение2). Если выбран текстовый тип (по умолчанию), то форматирование производиться не будет.

Указанные опции форматирования будут воздействовать на все переменные, содержащиеся  в объекте. Если переменная не может быть отформатирована указанным способом, она выводится как текст.

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

[Переменная формат], где формат - одно из следующих значений:

·	#x.x или #Nx.x или #Nyyyyy - числовое представление. x.x - длина числа/число разрядов после запятой; yyyyy - строка типа #,##0.00 (более подробную информацию можно получить в справочной системе Delphi, раздел formatting strings). Если строка x.x или yyyyy содержит символы ".", ",", "-", то последний такой символ будет использован в качестве разделителя целой и дробной части форматированного числа.

·	#Dxxxxx, #Txxxxx - дата и время. xxxxx - строка типа dd.mm.yy.

·	#Bxxxxx;yyyyy - булевское значение. Если значение - ложь, то выводится строка xxxxx, иначе yyyyy.

Вот примеры использования форматирования:

[Table1."N1" #9.2]   [Table1."N2" #N9-2]   [Table1."N3" #N#,##0.00] - для числа

[Table1."Date1" #Ddd.mm.yyyy]   [Table1."Time" #Thh:mm:ss] - для даты и времени

[Table1."Bool1" #BFalse;True]   [Table1."Bool2" #BНет;Да] - для булевского значения

Для того, чтобы отобразить объект другим шрифтом или цветом в зависимости от выполнения какого-либо условия, можно воспользоваться диалогом "Условное выделение". Диалог можно вызвать с помощью кнопки [image] на панели инструментов "Текст".

К примеру, нужно выделить суммы заказов, превышающие 1000$ жирным шрифтом. Для этого в объекте, содержащем сумму заказа, в диалоге указывается условие – Value > 1000 и задаются параметры шрифта. Условие выделения можно указать и по-другому – [Part total] > 1000. Другой пример использования выделения – для придания отчету презентабельного вида можно сделать чередующуюся раскраску строк данных. Для этого на бэнд надо поместить объект "Текст", растянуть его по ширине секции, в диалоге выделения набрать условие [LINE#] mod 2 = 0 и указать цвет фона (к примеру, серый).

В контекстном меню объекта можно задать следующие опции:

·	"растягиваемый" (Stretched) - высота объекта будет зависеть от количества строк в нем. При этом опция "растягиваемый" должна быть включена у бэнда, на котором находится объект. При печати бэнда вычисляется его высота, и все объекты с включенным растягиванием выводятся таким образом, что их нижняя граница растягивается до нижней границы бэнда.

·	"перенос слов" (WordWrap) - если слово не помещается в строке, оно переносится на следующую строку.

·	"перенос по слогам" (WordBreak) - при переносе слова делается разбивка его на слоги. При этом опция "перенос слов" должна быть включена.

·	"только текст" (TextOnly) - содержимое объекта трактуется как текст, переменные и выражения не обрабатываются.

·	"скрывать повторяющиеся" (Suppress) - не выводить объекты с повторяющимися значениями.

·	"автоширина" (AutoWidth) - при печати рамка растягивается по ширине объекта.

Кроме того, в инспекторе объектов можно задать следующие значения:

·	CharSpacing - расстояние между буквами;

·	GapX, GapY - отступы текста слева и сверху;

·    LineSpacing - расстояние между строками текста.


 Объект "Секция" (Бенд)

FastReport, как и все распространенные продукты, является бэнд-ориентированным построителем отчетов. Ниже приведен полный перечень бэндов и выполняемых ими функций.

Название	Функция
Report title	печатается один раз в начале отчета
Report summary	печатается один раз в конце отчета
Page header	печатается вверху на каждой странице
Page footer	печатается внизу на каждой странице
Master header	печатается в начале списка 1-го уровня
Master data	данные списка 1-го уровня
Master footer	печатается в конце списка 1-го уровня
Detail header	печатается в начале списка 2-го уровня
Detail data	данные списка 2-го уровня
Detail footer	печатается в конце списка 2-го уровня
Subdetail header	печатается в начале списка 3-го уровня
Subdetail data	данные списка 3-го уровня
Subdetail footer	печатается в конце списка 3-го уровня
Overlay	печатается на каждой странице нижним слоем
Column header	печатается в начале каждой колонки
Column footer	печатается в конце каждой колонки
Group header	заголовок группы
Group footer	печатается после группы
Cross header Cross data Cross footer	эта группа бэндов предназначена для создания отчетов с переменным количеством столбцов и разбивкой на страницы
Child	может быть прикреплен к любому из бэндов, кроме Page footer, и выводиться вместе с ним.

Как видно из таблицы, набор бэндов несколько отличается от общепринятого. Так, в классической схеме (которой придерживается, в частности, ReportBuilder) имеется только один дата-бэнд Detail.

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

Редактор для бэнда GroupHeader позволяет ввести условие группировки. Остальные бэнды не имеют редакторов.

В зависимости от типа бэнда в контекстном меню доступны следующие опции:

·	"растягиваемый" (Stretched) - высота бэнда определяется максимальной высотой находящихся в нем объектов. У объектов также должна быть включена опция "растягиваемый";

·	"разрываемый" (Breaked) - если бэнд не помещается целиком на странице, будут выведены только поместившиеся строки текста, а вывод остальных будет продолжен с новой страницы;

·	"формировать новую страницу" (FormNewPage) - после печати бэнда формирование отчета продолжается с новой страницы. Если опция включена у дата-бэнда, то новая страница будет сформирована после вывода всех подбэндов;

·	"на первой странице" (OnFirstPage) - если опция отключена, то бэнд не будет выведен на первой странице;

·	"на последней странице" (OnLastPage) - если опция отключена, то бэнд не будет выведен на последней странице;

·	"повторять на всех страницах" (RepeatHeader) - эта опция доступна у бэндов Master header, Detail header, Subdetail header, Group header, Cross header. При включении дублирует бэнд на новой странице или колонке.


 Объект "Рисунок"

Предназначен для вставки графического файла в формате BMP/WMF/ICO (и JPG, если установлен соответствующий модуль) в документ. Редактор объекта позволяет вставить рисунок и очистить содержимое объекта.

Рисунок может быть вставлен из поля таблицы БД, если в мемо объекта поместить ссылку на соответствующее поле, например: [Table1."GraphicField"]. Редактор мемо может быть вызван с помощью инспектора объектов либо комбинацией клавиш Ctrl+Enter. Эту опреацию можно также выполнить из инспектора объектов (свойство DataField).

В контекстном меню объекта и в инспекторе можно задать следующие опции:

·	"растягиваемый" (Stretched) - рисунок растягивается по границам объекта;

·	"сохранять пропорции" (KeepAspect) - если включено растягивание, пропорции рисунка сохраняются;

·	"центровка" (Center) - рисунок выводится в центре объекта.

·	BlobType - если рисунок хранится в поле таблицы БД, эта опция позволяет выбрать тип хранимого рисунка: BMP, WMF, ICO или JPG.


 Объект "Вложенный отчёт" (SubReport)

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

Объекты SubReport можно располагать на листе друг под другом или рядом. В случае, если объекты надо расположить друг под другом, их необходимо разнести по разным дата-бэндам (т.е. первый отчет - в первом бэнде Masterdata, второй  - во втором и т.д.). На использование SubReports накладываются следующие ограничения:

·	нельзя использовать колонки;

·	во  вложенных  отчетах  (не в основном!)  игнорируются бэнды ReportTitle, ReportSummary, PageHeader, PageFooter, ColumnXXX;

·	нельзя использовать разрываемые бэнды;

·	нельзя использовать группы.


 Объект "Линия"

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

Для рисования линии выберите инструмент "Линия" на панели объектов. При этом курсор мыши примет форму карандаша при перемещении его над поверхностью листа. Установите курсор мыши в место начала линии, нажмите левую кнопку мыши и двигайте мышь до нужной позиции. После отпускания кнопки будет нарисована линия. После окончания рисования нужно нажать кнопку "выбор объекта" либо Esc.


 Объект "Сложный текст" (Rich Text)

Предназначен для вставки текста в формате RTF (Rich Text format) в документ. В частности, таким образом можно вставить текст, подготовленный в текстовом процессоре MS Word, предварительно сохранив его в формате RTF или скопировав и вставив часть текста из любого тексового редактора через буфер обмена при помощи комбинации клавиш Ctrl+V.

Редактор объекта взят из Delphi\Demos\Richedit и позволяет выполнять все базовые операции над текстом - менять шрифт, выравнивание, создавать маркированные списки.

В тексте могут находиться переменные, обрамленные квадратными скобками - как и в объекте «Текст». RichText объект может быть вставлен из поля таблицы БД, если в мемо объекта (не в сам объект!) поместить ссылку на соответствующее поле, например: [Table1."RichField"]. Редактор мемо может быть вызван с помощью инспектора объектов либо комбинацией клавиш Ctrl + Enter. Эту опреацию можно также выполнить из инспектора объектов (свойство DataField).


 Объект "Текст с тенью"

Выполняет те же функции, что и объект "Текст". Кроме того, умеет отображать тень или градиентную заливку. Очень удобный объект для печати наклеек.


 Объект "Диаграмма"

Предназначен для вставки графика или диаграммы в документ. Возможно использование шести типов графиков: линии, точки, столбцы горизонтальные и вертикальные, области и круговые диаграммы. Редактор объекта представляет собой блокнот с тремя закладками: "Тип", "Данные" и "Пометки". Здесь можно задать различные опции для графика, а также указывать объекты, содержимое которых будет использовано при построении графика.

Закладка "Тип"

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

·	"объемная" - при включении диаграмма становится трехмерной;

·	"одиночная" - должна быть включена, если на диаграмме расположен один график;

·	"с подписью" - при включенной опции выводит рядом с диаграммой поясняющую подпись;

·	"с осями" - выводить оси (нужно отключать для круговой диаграммы);

·	"с пометками" - выводит пометки над каждым значением

·	"разноцветная" - если опция включена, каждое значение в диаграмме (столбец, сектор, линия) показывается разными цветами.

При построении отчета информация будет накапливаться в мемо:

Заголовок1;Заголовок2;Заголовок3

Число1;Число2;Число3

График можно построить и вручную, если занести в мемо объекта соответствующие значения. Если количество строк заголовка не соответствует количеству значений, график выведен не будет.

Закладка "Данные"

Для построения графика необходимо указать имена двух объектов типа "Текст", в которых содержится название и соответствующее числовое значение. При построении отчета содержимое этих объектов будет накапливаться в мемо диаграммы.

Если объект содержит число в форматированном виде или комбинацию числа и строки (например, "$1000" или "10 000"), то FR попытается выделить числовую часть из строки. Алгоритм выделения - удаляются все нецифровые символы в начале и в конце строки, после этого удаляются все символы - разделители разрядов (как правило, пробелы). То есть если задано более сложное форматирование, например: "10000км2", то такие объекты использовать уже нельзя. В этом случае следует создать невидимый объект с аналогичным содержимым, но без всякого форматирования, и указывать его имя. Невидимым объект можно сделать с помощью инспектора объектов в дизайнере, установив параметр Visible в 0.

Объект позволяет легко строить графики типа "Top10", т.е. график, в котором представлены только первые самые большие значения, а остальные значения просуммированы в отдельную группу с названием. Для этого необходимо указать количество выводимых значений и подпись (обычно в качестве подписи используется слово "Другие").

Закладка "Пометки"

На этой закладке можно указать, какие значения выводить в качестве пометок.


 Объект "Штрих-код"

Предназначен для вставки штрихкодов в документ. Можно использовать следующие типы штрихкодов:

•	2 of 5 interleaved

•	Code39

•	Code39 Extended

•	Code128A-C

•	Code93

•	Code93 Extended

•	MSI

•	PostNet

•	Codebar

•	EAN8

•	EAN13

•	EAN128A-C

•	UPC A, E0, E1, Supp2, Supp5


 Объект "Фигура"

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


 Объект "Флажок"

Представляет собой прямоугольник с крестиком внутри. Если в мемо объекта поместить ссылку на переменную либо на поле таблицы БД, то крестик будет показан при ненулевом значении переменной. В мемо можно также поместить символ «0» либо отличный от нуля.

В инспекторе объектов можно выбрать тип CheckBox'a: с крестиком или с галочкой (свойство CheckStyle).


 Объект "OLE"

Предназначен для вставки OLE объектов в документ. Редактор объекта «OLE» позволяет вставить новый объект и редактировать существующий.

Вставка нового объекта производится в стандартном диалоговом окне. OLE объект может быть вставлен из поля таблицы БД, если в мемо объекта поместить ссылку на соответствующее поле, например: [Table1."OLEField"]. Редактор мемо может быть вызван с помощью инспектора объектов либо комбинацией клавиш Ctrl + Enter. Эту опреацию можно также выполнить из инспектора объектов (свойство DataField).

В контекстном меню объекта опция "растягиваемый" (Stretched) позволяет корректно отображать данные в некоторых случаях (например, при вставке объекта "Лист Excel").


Бэнды в FastReport

В FastReport имеется 22 бэнда. Полный их перечень приведен в таблице.

Название	Функция
Report title	печатается один раз в начале отчета
Report summary	печатается один раз в конце отчета
Page header	печатается вверху на каждой странице
Page footer	печатается внизу на каждой странице
Master header	печатается в начале списка 1-го уровня
Master data	данные списка 1-го уровня
Master footer	печатается в конце списка 1-го уровня
Detail header	печатается в начале списка 2-го уровня
Detail data	данные списка 2-го уровня
Detail footer	печатается в конце списка 2-го уровня
Subdetail header	печатается в начале списка 3-го уровня
Subdetail data	данные списка 3-го уровня
Subdetail footer	печатается в конце списка 3-го уровня
Overlay	печатается на каждой странице нижним слоем
Column header	печатается в начале каждой колонки
Column footer	печатается в конце каждой колонки
Group header	заголовок группы
Group footer	печатается после группы
Cross header Cross data Cross footer	эта группа бэндов предназначена для создания отчетов с переменным количеством столбцов и разбивкой на страницы
Child	может быть прикреплен к любому из бэндов, кроме Page footer, и выводиться вместе с ним.
Как видно, набор бэндов отличается от "классической" схемы, которой, в частности, придерживается ReportBuilder (здесь и далее имеется в виду ReportBuilder 4.2). По этой схеме, сам отчет имеет источник данных и является списком первого уровня. Список второго уровня образуется бэндом Detail. Таким образом, классическая схема позволяет строить списки с двумя уровнями детализации. Если нужно больше уровней, применяется компонент "Вложенный отчет", который, по сути, представляет собой новый отчет со своим набором бэндов. Этот же компонент применяется для организации отчетов вида master-detail-detail или master-master, т.к. классическая схема позволяет размещать на листе отчета только один бэнд определенного типа.

Схема, принятая в FastReport, позволяет в большинстве случаев обходиться без вложенных отчетов. Как видно из таблицы, для организации многоуровневых списков имеется три бэнда: Master data, Detail data и Subdetail data. Кроме того, каждый из этих бэндов имеет заголовок (header) и подвал (footer). Каждому дата-бэнду назначается источник данных, сам же отчет не имеет источника. Это дает возможность строить списки с тройной вложенностью, если нужно больше - применяется вложенный отчет.

Индивидуальное назначение источников данных дата-бэндам дает возможность размещать на одной странице отчета несколько однотипных бэндов, и, как следствие, строить отчеты типа master-detail-detail, master-master и им подобные, без каких-либо ухищрений.

Для иллюстрации вышесказанного приведем примеры построения некоторых отчетов в FastReport и ReportBuilder.

Пример 1. Отчет с одним уровнем данных.

ReportBuilder	FastReport

Пример 2. Отчет с двумя уровнями данных.

ReportBuilder	FastReport

Пример 3. Отчет с тремя уровнями данных.

ReportBuilder	FastReport

Пример 4. Отчет типа master-detail-detail.

ReportBuilder	FastReport

Кроме основных бэндов, в FastReport имеется два вспомогательных бэнда, не входящих в "классическую" схему - Overlay и Child. Эти бэнды позаимствованы из QuickReport. Бэнд Overlay применяется для печати фоновых рисунков (или других объектов), которые выводятся на каждой странице отчета самым нижним слоем; бэнд Child может быть прикреплен к любому бэнду, кроме Page footer, и выводиться после него. К бэнду Child также можно прикреплять свои Childs. Он предназначен в основном для печати многосекционных бэндов (т.е. бэндов, состоящих из нескольких секций). Каждая секция образована одним child-бэндом и может иметь переменную высоту в зависимости от высоты находящихся в секции объектов.


Отчет с одним уровнем данных (список)

Это самый простой вид отчета. Для его создания необходимо разместить на листе бэнд "master data" и поместить в него объекты со ссылками на нужные данные. Бэнд необходимо подключить к источнику данных TfrxxxDataset.


Отчет с двумя уровнями

Для построения этого отчета необходимо разместить на листе бэнды "master data" и "detail data", затем поместить в них объекты со ссылками на нужные данные. Следует отметить, что таблицы (или запросы), на которых строится такой отчет, должны быть связаны отношением master-detail.

Порядок, в котором бэнды размещаются на листе, не имеет значения - сначала будет напечатана строка из master, потом соответствующие ей строки из detail. Отчет будет формироваться до тех пор, пока есть данные для master. Если надо, чтобы master с его подчиненным списком печатался с нового листа, установите для бэнда флажок "Формировать новую страницу" (FormNewPage). У отчета есть особенность - если для текущей строки из master список detail пуст, строка master печататься не будет. Если все же необходимо распечатать такие строки, для бэнда "master data" нужно установить флажок "Печатать, если detail пуст" (PrintIfSubsetEmpty).


Отчет с тремя уровнями

Для построения отчета разместите на листе бэнды "master data", "detail data" и "subdetail data". В остальном принципы построения такие же, как и для отчета с двумя уровнями детализации.


Cross-tab отчет

Этот вид отчета предназначен для печати таблицы, число столбцов которой на этапе построения отчета неизвестно. При формировании отчета столбцы, не поместившиеся на странице, будут перенесены на следующую. Для построения этого отчета разместите на странице бэнд "master data" и бэнд "cross data". Бэнды crossXXX размещаются на странице вертикально. На пересечении бэндов поместите объект, который будет отображаться в качестве ячейки таблицы. Необходимо поместить объект таким образом, чтобы он полностью помещался в границы области пересечения бэндов.

Это все, что нужно для построения базового отчета. Осталось назначить источники данных для "master data" и "cross data". Если бэнд "cross data" пересекает несколько обычных бэндов, то необходимо назначить источники данных для каждого из бэндов. Как видно, для построения cross-tab отчета необходимо как минимум два набора данных, связанных между собой отношением master-detail.

Если заглянуть в демо (отчет Cross-tab), то видно назначение бэндов "cross header", "cross footer": footer печатается последним столбцом (например, если нужно отпечатать сумму по строке), а header - первым. Кроме того, если в опциях бэнда "cross header" включен флажок "Выводить на всех страницах", то при переносе широкой таблицы на смежный лист header будет продублирован.

Отчет этого типа может иметь переменную высоту строки данных. Для этого надо включить опцию "растягиваемый" у бэнда "master data". При этом формирование кросс-таблицы будет происходить в два прохода: на первом проходе определяется максимальная высота строки, на втором выполняется вывод данных.

Текущая версия FastReport не позволяет строить cross-tab отчеты со сложными заголовками (как в ReportBuilder). Эта возможность будет доступна в одной из следующих версий FastReport.


Динамические отчеты

В динамических отчетах высота бэндов зависит от высоты находящихся в них объектов. Объектами, которые могут растягиваться в зависимости от количества имеющегося в них текста, являются объекты "Текст", "Текст с тенью" и "RichText".

Чтобы сделать объект растягиваемым, надо включить его флажок "Растягиваемый" (Stretched). Кроме того, этот же флажок надо включить у бэнда, на котором расположен объект. При печати растягиваемого бэнда FastReport считает максимальную высоту объектов, находящихся на бэнде, и устанавливает высоту бэнда равной максимальной высоте объектов.

Растягиваемый объект и объект с фиксированной высотой.

Если на бэнде несколько растягиваемых объектов, расположенных рядом, то при растягивании нижние границы всех объектов (независимо от их актуальной высоты) будут совпадать с нижней границей бэнда:

А как быть, если растягиваемые объекты нужно поместить друг под другом, либо под растягиваемым объектом поместить нерастягиваемый? В ReportBuilder для этой цели служат регионы и опции объектов StretchWithParent и ShiftWithParent. В FastReport для этого применяется бэнд Child. Объекты, находящиеся друг под другом, один или несколько из которых растягиваемые, нужно разнести по разным бэндам:

При этом всем Child - бэндам надо также установить флажок "Растягиваемый". Для связывания бэндов служит свойство "ChildBand" в инспекторе объектов. В вышеприведенном примере нужно связать Master data с Child 1 и Child 1 с Child 2.

Следует отметить, что все объекты FastReport имеют рамку. С помощью рамок отчету можно легко придать табличный вид. При растягивании объекта рамка растягивается вместе с ним. Это очень удобно - так, в ReportBuilder текстовые объекты рамки не имеют и ее приходится делать с помощью объекта "Shape". Это связано с рядом трудностей - нужно ровно разместить рамку относительно объекта. Кроме того, при печати не всегда удается состыковать рамки соседних объектов. В QuickReport рамка присутствует, но при растягивании объекта не растягивается вместе с ним.


Разрываемые бэнды

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

Для того, чтобы вывести на листе столько строк текста, сколько помещается, бэнд должен иметь помимо включенной опции "Растягиваемый" опцию "Разрываемый" (Breaked). При этом отчет будет выглядеть примерно так:

Если отчет многоколоночный, то содержимое объектов будет переноситься на следующую колонку:

Разрывать содержимое могут объекты "Текст", "Текст с тенью" и "RichText". Все остальные объекты будут выведены на той странице, где для этого достаточно свободного места.


Многоколоночный отчет

Если в обычном отчете при достижении конца страницы формирование продолжается с нового листа, то в многоколоночном - на том же листе, но рядом, т.е. в несколько смежнорасположенных колонок. Количество колонок задается в опциях страницы. Обычный отчет можно превратить в многоколоночный, всего лишь задав количество колонок в опциях страницы. Бэнды "column header" и "column footer" позволяют снабдить каждую колонку заголовком и нижней частью.

Кроме того, в FR2.4 количество колонок можно задавать отдельно для каждого дата-бэнда. Если установить свойство Columns > 1 у бэнда, то вывод строк данных будет происходить слева направо и сверху вниз. Можно также указать ширину колонки и промежуток между колонками. Бэнд отображает текущие установки в дизайнере штриховыми линиями.


Отчет с титульным листом

FR позволяет легко делать многостраничные отчеты (например, первая страница - титульный лист, все остальное - прочая информация). Для того, чтобы создать/удалить лист, используйте кнопки на панели инструментов либо контекстное меню, появляющееся при нажатии правой кнопки мыши на закладке страницы.

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

Содержимое страницы может быть выведено на свободном месте предыдущего листа, если в настройках страницы включена опция "Печать на предыдущем листе" (свойство PrintToPrevPage в инспекторе).


Вложенный отчет

Вложенный отчет - это отчет с размещенным на нем объектом SubReport [image], который представляет собой ссылку на другой отчет, расположенный на отдельной странице. При формировании такого отчета вместо объекта SubReport будет выведен соответствующий отчет. При вставке объекта в отчет автоматически добавляется новая страница с названием "SubReport xx".

Объекты SubReport можно располагать на листе друг под другом или рядом. В случае, если объекты надо расположить друг под другом, их необходимо разнести по разным бэндам (например, первый отчет - в бэнде "master data", второй - в бэнде "child").

На использование SubReports накладываются следующие ограничения:

·	нельзя использовать колонки;

·	во вложенных отчетах (не в основном!) игнорируются бэнды ReportTitle, ReportSummary, PageHeader, PageFooter, ColumnXXX;

·	нельзя использовать разрываемые бэнды;

·	нельзя использовать группы.


Master-Detail-Detail отчет

Для построения этого отчета разместите на листе бэнд "master data" и два бэнда "detail data". Для бэндов "detail data" назначьте соответствующие источники данных.

Разумеется, таким образом можно строить и отчеты типа Master-Master, Master-Detail-SubDetail-SubDetail. Отчеты типа Master-Detail-Master-Detail строить таким способом нельзя - нужно разнести раные master-detail по отдельным страницам (см. отчет с титульным листом). Количество одинаковых дата-бэндов на листе может быть до 32.


Отчет без бэндов

Часто бывает необходимо отобразить данные только из одной записи БД, разместив их на бланке. Пример - платежное поручение, программку для печати которого писал, наверное, каждый. В этом случае отчет может вообще не содержать бэндов. Объекты, расположенные непосредственно на листе, при печати выведутся на своих местах.


Отчет с группами

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

Для построения отчета разместите на листе бэнды "group header" и "master data". Назначьте источник данных для "master data", затем в редакторе бэнда "group header" укажите условие группировки. Например, чтобы распечатать список сотрудников в группированном виде (группировка по первой букве фамилии), надо указать примерно такое условие группировки: Copy([Фамилия], 1, 1). При изменении этого условия будет сформирована новая группа.

На использование групп накладываются следующие ограничения:

·	нельзя применять группы во вложенных отчетах;

·	группа может выступать только в роли списка 1-го уровня, т.е. сначала идет группа, затем - master, detail и т.п.

Исходный отчет	Сформированный отчет

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


Отчет с диаграммами

Предположим, имеется отчет вида "Клиент - сумма заказа":

Action Club	$1000

Action Diver Supply	$12000

Adventure Undersea	$5000

Для построения диаграммы по этим данным необходимо разместить объект "Диаграмма" в бэнде "report summary" (или любом другом, который печатается после вывода всех необходимых данных). В редакторе объекта нужно выбрать тип диаграммы (один из шести возможных - линии, точки, столбцы горизонтальные и вертикальные, области и круговые диаграммы). Для связывания диаграммы с данными необходимо указать имена объектов, которые содержат эти данные (в нашем случае это объект, содержащий строку наименования клиента и объект с суммой). Имя объекта можно увидеть в Object inspector.


Дизайнер

Дизайнер предоставляет пользователю удобные средства для разработки внешнего вида отчета и позволяет сразу выполнить предварительный просмотр. Интерфейс дизайнера выполнен на современном уровне с использованием панелей инструментов (toolbars), расположение которых можно изменять по своему вкусу. Информация о расположении панелей запоминается в реестре, и при следующем запуске восстанавливается. Также в реестре запоминаются остальные настройки дизайнера.


Клавиши управления

·	Стрелки - перемещение по объектам.

·	Ctrl + Стрелки - плавное перемещение выделенного объекта (объектов).

·	Shift + Стрелки - уменьшение/увеличение размеров объекта.

·	Alt + Стрелки - склеивание объекта с ближайшим в выбранном направлении.

·	Enter - вызов редактора объекта.

·	Delete - удаление объекта.

·	Insert - показывает диалог вставки поля БД в отчет;

·	Ctrl + Enter - вызов редактора мемо.

·	Ctrl + 1..9 - установка толщины рамки объекта.

·	Ctrl + Z - отменить последнее действие. Число уровней отката - до 100.

·	Ctrl + Y - повторить отмененное действие.

·	Ctrl + G - показать сетку.

·	Ctrl + B, Ctrl + I, Ctrl + U - управление стилем шрифта - аналоги кнопок Ж, К, Ч на панели текста.

·	Ctrl + F - обрамить выделенный объект (объекты).

·	Ctrl + D - снять обрамление с объекта.

·	Ctrl + X - вырезать в буфер.

·	Ctrl + V - вставить из буфера.

·	Ctrl + C - копировать в буфер.

·	Ctrl + A - выделить все объекты на листе.

·	Ctrl + N - новый отчет.

·	Ctrl + O - открыть файл с отчетом.

·	Ctrl + S - сохранить отчет в файле.

·	Ctrl + P - предварительный просмотр отчета.


Управление мышью

·	Левая кнопка - выбор объекта; вставка нового объекта; перемещение и изменение размеров объекта (объектов).

·	Правая кнопка - контекстное меню объекта (объектов), над которым находится указатель мыши.

·	Двойной щелчок левой кнопкой - вызов редактора объекта. Если двойной щелчок сделать на пустом месте листа, то вызывается диалоговое окно «Параметры страницы».

·	Shift + левая кнопка - если объект уже выделен, то снимает с него выделение, иначе объект выделяется. Выделение остальных объектов не изменяется.

·	Ctrl + левая кнопка - при нажатии и перемещении мыши рисуется рамка; после отпускания кнопки мыши выделяются все объекты, попавшие в рамку. Такого же эффекта можно добиться, если щелкнуть левой кнопкой мыши на пустом месте листа, и, не отпуская кнопки, потянуть мышь до нужной позиции.

·	При перемещении бэнда его объекты перемещаются вместе с ним. Если это нежелательно, то перемещение следует выполнять при нажатой клавише Alt.

·	Изменить масштаб выделенных объектов можно, потянув мышкой за красный квадратик на нижнем правом углу группы выделенных объектов.

·	При приближении указателя мыши к границе двух соседних объектов вид указателя изменяется. Если при этом нажать левую кнопку и переместить указатель мыши, граница объектов также перемещается (горизонтальный сплиттинг).


Параметры отчета

Окно с параметрами отчета доступно из меню Файл|Параметры отчета....

В списке принтеров имеется "Виртуальный принтер". Он необходим в случае, если в системе нет установленных принтеров. При этом дизайнер и предварительный просмотр отчета функционируют нормально. Вы можете выбрать любой из форматов бумаги, поддерживаемой Windows (вплоть до формата A2), устанавливать ориентацию листа бумаги. Т.е. "виртуальный" принтер эмулирует функции реального принтера (разумеется, на нем нельзя печатать ;)

Другой случай, когда необходимо использовать виртуальный принтер - Вы разрабатываете форму отчета для принтера с форматом бумаги А3, а самого принтера у Вас нет (он есть у заказчика). В этом случае выбор виртуального принтера снимает проблему.

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

Если флажок "Делать два прохода" установлен, формирование отчета будет осуществляться в два этапа. На первом проходе отчет формируется, осуществляется его разбивка на страницы, но результат нигде не сохраняется. На втором проходе происходит обычное формирование отчета с сохранением результата в потоке.

Для чего же нужно делать два прохода? Наиболее часто эта опция применяется в случае, если в отчете имеется упоминание об общем количестве страниц в нем, т.е. информация вида "Страница 1 из 15". Общее количество страниц подсчитывается на первом проходе и доступно через системную переменную TOTALPAGES. Наиболее частая ошибка - попытка применить эту переменную в однопроходном отчете, в этом случае она возвращает  0.

Другая область применения - выполнение каких-либо вычислений на первом проходе и отображение результатов на втором. Например, в случае, когда необходимо отобразить в заголовке группы сумму, которая обычно подсчитывается и отображается в подвале группы. Такого рода вычисления связаны с использованием встроенного языка FR.


Параметры страницы

Окно с параметрами страницы доступно из меню "Файл|Параметры страницы..." либо при двойном щелчке левой кнопкой мыши на свободном месте листа отчета. Окно представляет собой блокнот с четырьмя закладками: "Бумага", "Источник", "Поля" и "Параметры".

Закладка "Бумага"

Поля ввода ширины и высоты становятся доступными, если из списка "Размер" выбран пункт "Размеры, определяемые пользователем". Следует отметить, что не все драйверы принтеров поддерживают пользовательский размер бумаги. Кроме того, не все принтеры поддерживают произвольные пользовательские размеры (например, драйвер принтера HP LaserJet 6L не дает устанавливать размеры листа меньше чем 76 * 127мм).

Закладка "Источник"

Закладка "Поля"

Здесь можно задать размеры отступа от краев листа, а также задать опцию «Растянуть на область печати». На этом моменте следует остановиться более подробно.

Возможны два варианта страницы в дизайнере: с полями печати и без них. Если поля печати включены (по умолчанию), то они отображаются в дизайнере и все, что находится вне полей, на печать не выводится. Это позволяет добиться максимального соответствия между видом страницы в дизайнере и на бумаге. Координаты объектов исчисляются от верхнего левого угла листа.

Но при переходе на другой принтер из-за изменившихся границ печати некоторые объекты могут вылезти за пределы полей и не будут напечатаны. Если включить флажок "Растянуть на область печати", то предполагается, что страница в дизайнере соответствует области печати, т.е. все, что находится на странице, будет корректно напечатано на любом принтере. Координаты объектов в этом случае исчисляются от верхнего левого угла области печати. Правда, при этом вид страницы в дизайнере будет немного отличаться от распечатанного документа.

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

Следует отметить, что на формирование отчета при включенных полях страницы оказывает непосредственное влияние только установка значений для верхнего и нижнего полей. Левое же и правое поля действуют только для Cross-tab отчетов.

Закладка "Параметры"

На этой закладке можно указать количество колонок для печати многоколоночных отчетов. Текущие установки отображаются в дизайнере.

Флажок «Печатать на предыдущем листе» позволяет начать печать страницы, начиная со свободного места на предыдущем листе. Эта опция может применяться в случае, если шаблон отчета состоит из нескольких листов либо при печати составных (composite) отчетов.


Опции дизайнера

Чтобы установить опции дизайнера, воспользуйтесь командой меню "Сервис|Опции...".

Здесь можно задать используемые единицы измерения (пикселы, миллиметры, дюймы), указать шаг сетки в точках (шаг сетки 18 точек точно соответствует 5мм. Это особо полезно в случаях, когда надо сделать бланк, размеры которого кратны 5мм. Например, платежное поручение делается таким образом за 10 минут).

Также можно указать способ прорисовки объектов при их перемещении (или изменения размеров).

Опция "Расположение страницы" позволяет выбрать расположение страницы. Это необходимо, если на экране присутствует инспектор объектов: таким образом можно задать взаимное расположение страницы и инспектора.

Если опция "Цветные кнопки" отключена, то все кнопки становятся черно-белыми; при наведении указателя мыши на кнопку она показывается в цвете.

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

Наконец, опция "Редактирование после вставки" управляет процессом вставки новых объектов. Если опция включена, каждый раз при вставке объекта будет показываться его редактор. При вставке большого количества пустых объектов опцию лучше отключать.

На закладке "Редактор" можно настроить шрифт для окна редактора текста. При включенной опции "Использовать установки шрифта объекта" шрифт в окне редактора текста будет соответствовать шрифту редактируемого объекта.


Инспектор объектов

Инспектор позволяет манипулировать всеми свойствами выбранных объектов.

Окно инспектора похоже на Object Inspector в Delphi и функционирует аналогичным образом. Так же, как и остальные панели инструментов, его можно показать или скрыть соответствующей командой меню "Сервис|Панели инструментов". Показать окно можно также при нажатии на клавишу F11. Двойной щелчок на заголовке окна инспектора сворачивает окно в полоску, еще один двойной щелчок - восстанавливает исходные размеры.


Диалог вставки полей БД в отчет

Этот диалог позволяет быстро вставить поле БД в отчет. Он вызывается из меню "Сервис|Панели инструментов|Вставка поля БД" или при нажатии клавиши Insert.

Окно содержит два списка: список таблиц (запросов) в верхней части окна и список полей внизу.	Вставка поля осуществляется методом drag&drop (перетащил и бросил). Для этого надо выделить мышкой нужное поле из списка внизу и, не отпуская кнопки мыши, перенести его на страницу отчета. При отпускании кнопки мыши на странице появится новый объект "Текст" со ссылкой на выбранное поле БД.

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


Словарь данных

Окно словаря данных (Data dictionary) доступно из меню "Файл|Словарь данных...". Окно представляет собой блокнот с тремя закладками: "Переменные", "Данные из БД" и "Источники данных для бэндов". Словарь данных хранится в файле вместе с формой отчета, но есть возможность хранить его в отдельном файле с расширением FRD и считывать при необходимости в существующий отчет. Для этого воспользуйтесь командами меню дизайнера "Файл|Открыть" и "Файл|Сохранить как..." и с появившихся стандартных диалогах открытия или сохранения файла выберите тип файла - "Словарь данных FastReport".

Закладка "Переменные"

Эта закладка предназначена для работы со списком переменных.

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

При создании нового отчета список пуст, и чтобы заполнить его, воспользуйтесь кнопками под списком:  - добавляет новую категорию и [image] - добавляет новую переменную к текущей категории. Эти действия можно также выполнить с клавиатуры: клавиша Insert добавляет новую переменную, Ctrl+Insert добавляет новую категорию. Назначение остальных кнопок следующее: кнопка [image] редактирует название переменной или категории (клавиатурный аналог - клавиша Enter), кнопка [image] удаляет переменную или категорию (клавиатурный аналог - клавиша Delete). Кнопка [image] вызывает редактор списка переменных, где они представлены в виде списка строк. Здесь можно делать массовую вставку переменных из буфера обмена, переносить переменные из одной категории в другую.

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

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

·	страница - номер текущей страницы, соответствует функции Page# (см. описание встроенных функций);

·	дата - дата начала формирования отчета, соответствует Date;

·	время - время начала формирования отчета, соответствует Time;

·	Строка, LineThrough#, Колонка, CurrentLine#, Всего страниц - см. описание встроенных функций.

Переменной можно также сопоставить выражение - для этого следует включить выбрать переменную и включить флажок "Выражение" в нижней части окна. При этом строка ввода выражения становится активной. Для визуального построения выражения нажмите кнопку [image].

Окно вставки переменных в отчет для вышеприведенного примера будет выглядеть следующим образом:

Закладка "Данные из БД"

На этой закладке в левой части представлен список всех доступных наборов данных - таблиц, запросов, имеющихся на всех формах проекта.

Назначение этого диалога простое: исключить ненужные данные из списка и дать им более полные названия (псевдонимы). Это необходимо потому, что отчет, как правило, содержит данные всего лишь из одного-двух запросов или таблиц. FastReport же по умолчанию предлагает вставлять поля из всех источников данных, которые он обнаружил на всех формах проекта. В больших проектах это десятки (а то и сотни) таблиц и запросов.

Чтобы использовать набор данных, надо перенести его из левого списка в правый. Сделать это можно либо с помощью оперции drag&drop, либо двойным щелчком мыши на нужном наборе данных, либо воспользовавшись кнопками в средней части окна.

Для исключения поля из списка выберите необходимый набор данных и его поле и нажмите на флажок "Исключить поле из списка". Повторное нажатие восстанавливает вхождение поля в список. Команда также доступна при нажатии на клавишу "Пробел".

Для задания псевдонима выберите необходимый элемент и в строке "Псевдоним" укажите новое название. Если псевдоним не нужен, сотрите содержимое строки. Команда также доступна при нажатии клавиши Enter.

Как видно из рисунка, назначение псевдонимов источникам данных и их полям облегчает их использование при построении отчета. Сравните диалог вставки полей в отчет до применения псевдонимов и после:

      Без псевдонимов	С использованием псевдонимов

Закладка "Источники данных для бэндов"

На этой закладке представлен список всех доступных источников данных для бэндов, имеющихся на всех формах проекта. Так же, как и в предыдущем диалоге, здесь можно давать элементам более осмысленные имена (псевдонимы). Результат можно увидеть в диалоге выбора источника данных для дата-бэнда:


Конструктор выражений

Окно конструктора выражений можно вызвать из редактора текста, нажав кнопку [image] на панели инструментов. Оно также доступно из нектороых диалоговых окон, в которых требуется задать некоторое выражение (например, в редакторе условия группировки бэнда group header).

Окно содержит поле ввода выражения и кнопки вызова диалогов вставки переменных, полей БД, функций, а также кнопки быстрой вставки знаков арифметических и логических операций.


Диалог вставки поля БД

Диалог позволяет выбрать поле БД для вставки в выражение. Слева размещен список всех доступных таблиц БД, справа – список полей в выбранной таблице. Для вставки поля в выражение надо выбрать поле и нажать кнопку "ОК", либо сделать на поле двойной щелчок мышью.


Диалог вставки переменной

Диалог позволяет выбрать переменную для вставки в выражение. Слева размещен список категорий, справа – список переменных в выбранной категории. Для вставки переменной в выражение надо выбрать переменную и нажать кнопку "ОК", либо сделать на ней двойной щелчок мышью.


Диалог вставки функции

В этом диалоге можно выбрать функцию для вставки в выражение. При выборе функции в нижней части окна отображается краткое описание функции и списка ее аргументов. Если функция имеет аргуметны, то при при нажатии на кнопку "ОК" будет предложено заполнить их:


Панель инструментов "Стандартная"

Иконка	Название	Описание
	Новый отчет	Создает новый пустой отчет.
	Открыть отчет	Открывает существующий отчет из файла с расширением FRF. Клавиатурный аналог - Ctrl+O.
	Сохранить отчет	Сохраняет отчет в файл с расширением FRF. Клавиатурный аналог - Ctrl+S.
	Предвари-тельный просмотр	Выполняет построение отчета и его предварительный просмотр. Клавиатурный аналог - Ctrl+P.
	Вырезать	Вырезает выделенные объекты в буфер обмена. Клавиатурный аналог - Ctrl+X.
	Копировать	Копирует выделенные объекты в буфер обмена. Клавиатурный аналог - Ctrl+C.
	Вставить	Вставляет объекты из буфера обмена. Клавиатурный аналог - Ctrl+V.
	Отменить	Отменяет последнюю операцию. Число уровней отката - до 100. Клавиатурный аналог - Ctrl+Z.
	Повторить	Повторяет последнюю отмененную операцию. Клавиатурный аналог - Ctrl+Y.
	На передний план	Помещает выделенные объекты на передний план.
	На задний план	Помещает выделенные объекты на задний план.
	Выделить все	Выделяет все объекты на странице. Клавиатурный аналог - Ctrl+A.
	Новая страница	Создает новую страницу.
	Новый диалог	Создает новую форму диалога
	Удалить страницу	Удаляет текущую страницу.
	Свойства страницы	Вызывает диалог со свойствами страницы.
	Показать сетку	Показывает точечную сетку на странице. Шаг сетки можно задать в опциях дизайнера. Клавиатурный аналог - Ctrl+G.
	Выравнивать объекты по сетке	При перемещении или изменении размеров объектов координаты/размеры будут изменяться скачкообразно в соответствии с шагом сетки.
	Расположить в узлах сетки	Изменяет размеры/расположение выделенных объектов таким образом, чтобы они размещались в узлах сетки.
	Справка	Показывает справку по элементам управления.
	Выход	Закрывает окно дизайнера.


Панель инструментов "Текст"

Иконка	Название	Описание
	Шрифт	Позволяет выбрать название шрифта из выпадающего списка. Помнит пять последних использованных шрифтов. Двойной щелчок мышью вызывает стандартный диалог выбора шрифта.
	Размер шрифта	Позволяет выбрать размер шрифта из выпадающего списка. Размер можно также ввести вручную.
	Утолщение	Устанавливает/снимает утолщение шрифта. Клавиатурный аналог - Ctrl+B.
	Наклон	Устанавливает/снимает наклон шрифта. Клавиатурный аналог - Ctrl+I.
	Подчеркивание	Устанавливает/снимает подчеркивание шрифта. Клавиатурный аналог - Ctrl+U.
	Цвет шрифта	Выбирает цвет шрифта из выпадающего списка.
	Условное выделение	Показывает диалог с атрибутами выделения для выбранного объекта "Текст".
	Выравнивание влево	Устанавливает выравнивание текста влево.
	Выравнивание по центру	Устанавливает выравнивание текста по центру.
	Выравнивание вправо	Устанавливает выравнивание текста вправо.
	Выравнивание по ширине	Устанавливает выравнивание текста равномерно по ширине.
	Выравнивание по верхнему краю	Устанавливает выравнивание текста по верхнему краю.
	Выравнивание по высоте	Устанавливает выравнивание текста по высоте.
	Выравнивание по нижнему краю	Устанавливает выравнивание текста по нижнему краю.
	Вертикальный текст	Переключает номальный/вертикальный шрифт.


Панель инструментов "Прямоугольник"

Иконка	Название	Описание
	Верхняя линия	Включает/выключает верхнюю линию рамки.
	Левая линия	Включает/выключает левую линию рамки.
	Нижняя линия	Включает/выключает нижнюю линию рамки.
	Правая линия	Включает/выключает правую линию рамки.
	Все линии	Включает все линии рамки.
	Нет линий	Выключает все линии рамки.
	Цвет фона	Выбирает цвет фона из выпадающего списка.
	Цвет линии	Выбирает цвет линии из выпадающего списка.
	Стиль линии	Выбирает стиль линии из выпадающего списка.
	Толщина линии	Выбирает толщину линии из выпадающего списка.


Панель инструментов "Выравнивание"

Иконка	Описание
	Выровнять левые края.
	Центрировать по горизонтали.
	Центрировать по горизонтали в окне.
	Расположить равномерно по ширине.
	Выровнять правые края
	Выровнять верхние края.
	Центрировать по вертикали.
	Центрировать по вертикали в окне.
	Расположить равномерно по высоте.
	Выровнять нижние края.


Обзор

Эволюция встроенных генераторов отчетов (таких, как QuickReport, ReportBuilder, FastReport) идет по пути постепенного отрыва от среды проекта.

Таким образом, среда FastReport позволяет конечному пользователю:

·	создавать новые и модифицировать существующие отчеты;

·	создавать источники данных, на основе которых будет построен отчет;

·	создавать диалоговые формы для запроса параметров отчета у пользователя;

·	используя встроенный Pascal-подобный язык, выполнять обработку данных в отчете и управлять логикой работы диалоговых окон.

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


Обзор

Для разработки диалоговых форм используется тот же дизайнер, что и для страниц отчета. Для создания новой формы служит кнопка [image] на панели инструментов дизайнера - она добавляет в отчет новую страницу, при переключении на которую меняется содержимое панели "Объекты":

Рис. Панель инструментов "Объекты" при активной странице "Форма отчета".

Рис. Панель инструментов "Объекты" при активной странице "Диалоговая форма".

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

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


Элементы управления

Элементы управления диалоговых форм, использующиеся в системе имеют следующий набор:

Название	Описание
Label	Строка текста.
Edit	Предназначен для ввода строки текста с клавиатуры.
Memo	Предназначен для ввода нескольких строк текста.
Button	Кнопка.
CheckBox	Флажок.
RadioButton	Круглая кнопка - аналог переключателя с зависимой фиксацией.
ListBox	Список строк предназначен для выбора одного из значений.
ComboBox	Выпадающий список строк.

Надо отметить, что все элементы управления имеют общий набор свойств и методов:

Свойство	Значение по умолчанию	Описание
Color		Цвет фона объекта.
Enabled		Разрешает или запрещает работу объекта.
Font		Установки шрифта, которым будет выведен текст объекта.
Height		Высота объекта.
Left		Координата Х левого верхнего угла объекта.
Name		Имя объекта.
OnClick		Реакция на действие над объектом - аналог Delphi OnClick. Здесь может быть код на FastReport Pascal.
Restrictions		Набор флагов, запрещающих те или иные действия над объектом (перемещение, удаление, редактирование и пр.).
Top		Координата Y левого верхнего угла объекта.
Visible		Видимость объекта.
Width		Ширина объекта.


 Label

Назначение этого элемента управления - вывод поясняющей надписи на диалоговой форме:

Элемент имеет следующие свойства (помимо вышеперечисленных общих свойств):

Свойство	Значение по умолчанию	Описание
Alignment		Выравнивание строки текста внутри рамок объекта.
AutoSize		Установка ширины объекта равной максимальной ширине имеющегося в нем текста.
Caption		Собственно строка текста.
WordWrap		Перенос слов внутри объекта. При этом свойство AutoSize должно быть False.


 Edit

Этот элемент управления предназначен для ввода строки текста с клавиатуры.

Элемент имеет следующие свойства:

Свойство	Значение по умолчанию	Описание
ReadOnly		Запрещает модифицировать строку текста.
Text		Текст, который будет показан в элементе управления по умолчанию.


 Memo

Этот элемент управления предназначен для ввода нескольких строк текста с клавиатуры.

Элемент имеет следующие свойства:

Свойство	Значение по умолчанию	Описание
Lines		Строки текста, который будет выведен по умолчанию.
ReadOnly		Запрещает модифицировать текст.


 Button

Элемент управления представляет собой кнопку.

Элемент имеет следующие свойства:

Свойство	Значение по умолчанию	Описание
Caption		Заголовок кнопки.
ModalResult		Определяет, надо ли завершать работу диалогового окна при нажатии на кнопку и какой результат при этом возвращать.

Свойство ModalResult предназначено для автоматического закрытия окна диалога при нажатии на кнопку. Обычно кнопка "ОК" имеет ModalResult = mrOk, кнопка "Отмена" - mrCancel. Кроме того, аналогично свойство имеется у самой формы диалога. Если присвоить ему что-либо, отличное от mrNone, диалог завершит работу.


 CheckBox

Этот элемент управления представляет собой флажок, который может быть в двух состояниях: включенном и выключенном. Около флажка выводится поясняющая надпись.

Элемент имеет следующие свойства:

Свойство	Значение по умолчанию	Описание
Alignment		Позиция надписи по отношению к флажку.
Caption		Поясняющая надпись.
Checked		Состояние флажка (включен/выключен).


 RadioButton

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

Элемент имеет следующие свойства:

Свойство	Значение по умолчанию	Описание
Alignment		Позиция надписи по отношению к переключателю.
Caption		Поясняющая надпись.
Checked		Состояние переключателя (включен/выключен).


 ListBox

Этот элемент управления представляет собой список строк с возможностью выбора одной из них.

Элемент имеет следующие свойства:

Свойство	Значение по умолчанию	Описание
Items		Строки текста.


 ComboBox

Этот элемент управления представляет собой выпадающий список строк с возможностью выбора одной из них.

Элемент имеет следующие свойства:

Свойство	Значение по умолчанию	Описание
Items		Строки текста.
Style		Тип элемента.
Text		Выбранное значение.
Свойство элемента Style определяет тип элемента. Возможны 3 значения:

·	csDropDown - элемент позволяет не только выбирать значение из списка, но и набирать нужное в строке редактирования;

·	csDropDownList - элемент позволяет вводить только значения из списка;

·	csLookup - строка в списке представлена в виде Строка1;Строка2. При этом в списке показывается только часть строки Строка1, а при выборе этого значения в программу передается часть Строка2. Например, таким образом легко организовать выбор месяца, заполнив элемент строками типа Январь;1. Выбранное значение доступно через свойство Text.


Диалоговая форма

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

Свойство	Значение по умолчанию	Описание
BorderStyle		Тип диалоговой формы - с фиксированными размерами либо с возможностью менять размеры окна с помощью мыши.
Caption		Заголовок окна.
Color		Цвет окна.
Height		Высота окна.
Left		Позиция X окна.
OnActivate		Обработчик события, вызывающийся после инициализации всех элементов окна.
Position		Позиция окна - по центру экрана либо по заранее заданным координатам Left, Top.
Top		Позиция Y окна.
Type		Тип страницы - диалоговая форма либо страница отчета.
Width		Ширина окна.
Обработчик OnActivate соответствует Delphi OnActivate. Он вызывается, когда все элементы управления уже размещены на форме диалога и форма готова к выводу на экран. Этот обработчик удобно использовать для занесения каких-либо начальных значений в элементы управления, например, заполнения списка ListBox и пр.


Передача информации в отчет

Значения, введенные в элементы управления, часто требуется тем или иным образом передать в отчет. Существует два способа это сделать.

С использованием переменных

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

Это можно сделать следующим образом: в обработчике события OnClick кнопки OK написать:

begin

  TitleText := Edit1.Text;

end

В залоговок отчета при этом надо поместить объект "Текст" с содержимым [TitleText]:

Прямое обращение

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


Обзор

В состав FastReport входит интерпретатор Pascal-подобного языка. Данный интерпретатор является мощным средством, позволяющим в независимости от используемого языка программирования (Delphi или C++Builder) писать скрипты, выполняющиеся при построении отчетов.

В качестве языка используется диалект Pascal, со следующими возможностями:

·	операторы: присваивания; условные операторы, операторы циклов и безусловного перехода: if...then...else, while...do, repeat...until, for..to..do, goto;

·	операторные скобки begin...end;

·	бестиповые переменные, массивы;

·	обращение к свойствам и методам объектов FastReport через точечную нотацию.

Язык по сравнению с Object Pascal сильно упрощен. Так, используются следующие упрощения:

·	все переменные имеют тип Variant; отсутсвует описание переменных;

·	все переменные являются глобальными, нет локальных переменных;

·	отсутствуют такие типы данных, как "класс", "запись", перечисляемый тип и т.п.;

·	нет возможности написания собственных процедур или функций;

·	нет операторов прерывания цикла (break, continue);

·	количество параметров, передаваемых в процедуру или функцию, может быть не более 3;

·	в связи с тем, что переменные не имеют типа, контроль типов данных невозможен - это следует учитывать при написании логических выражений;

·	массивы могут быть только одномерными.

Несмотря на значительные упрощения, интерпретатор позволяет выполнять довольно сложную обработку информации. Из скрипта доступны все свойства и методы объектов отчета, а также поля таблиц БД. В скрипте можно создавать переменные и массивы, которые будут доступны во всем отчете. О возможностях встроенного языка говорит тот факт, что такая довольно сложная задача, как печать сумм группы в ее заголовке (сама сумма считается в подвале группы) средствами языка FastReport делается элементарно.


Скрипты и объекты

В каждом объекте может быть размещен один или несколько (блок) операторов. Редактирование скрипта производится в окне редактора текста (для того, чтобы увидеть скрипт, надо нажать кнопку [image] в верхней части окна). Скрипт выполняется каждый раз перед печатью объекта. По сути, скрипт является обработчиком события OnBeforePrint объекта.

Скрипт имеется не только у объектов. И бэнды, и страницы отчета также имеют свой скрипт. Вызвать скрипт бэнда можно, вызвав редактор свойства OnBeforePrint бэнда (из инспектора объектов, либо выделив бэнд и нажав Ctrl+Enter). Вызвать скрипт страницы отчета можно, вызвав редактор свойства OnBeforePrint страницы (для этого надо щелкнуть на пустом месте страницы и вызвать редактор из инспектора объектов). Диалоговая форма, как и страница отчета, имеет скрипт - свойство OnActivate. Скрипт остальных объектов может быть вызван через их свойство Memo либо при нажатии Ctrl+Enter.


Написание кода

В скрипте можно использовать свойства и методы объектов отчета, поля таблиц БД, различные константы. Также можно создавать переменные и массивы, которые будут доступны во всем отчете. Кроме того, можно использовать процедуры и функции.

Использование переменных

Переменную описывать не надо, она имеет тип Variant. В имени переменной можно использовать латинские буквы, цифры и знак подчеркивания. Переменную из скрипта можно использовать в объектах, и наоборот, переменную из списка переменных можно использовать в скрипте. Скриптовые переменные хранятся в объекте TfrVariables, к которому есть доступ через глобальную переменную frVariables.

Пример использования промежуточной переменной:

begin

  Cust := [CustomerData.RepQuery."CustNo"];

  if FinalPass then

    TotalSales := Arr[Cust] else

    TotalSales := 0;

end;

В этом примере создается переменная Cust, которой присваивается значение поля таблицы БД.

Кроме этого, можно обращаться к переменным, определенным в словаре данных, к системным переменным, а также пользовательским переменным. При этом переменные могут содержать в имени недопустимые с точки зрения синтаксиса символы (например, системная переменная Page#). Обращаться к таким переменным следует с использованием квадратных скобок:

begin

  a := [Page#];

end

Обращение к полям БД

В скрипте могут быть использованы ссылки на поле из таблицы БД. Обращение к полям выполняется в следующем виде:

[Имя формы.Имя таблицы."Имя поля"]

Полная форма обращения применяется в случае, если компонент-таблица и компонент-отчет расположены на разных формах (или модулях данных). Если компоненты расположены на одной форме, обращение может быть вида [Имя таблицы."Имя поля"].

Форма обращения ["Имя поля"] использует для поиска поля таблицу, которая является основной для бэнда, в котором такое обращение произошло. Например, имея бэнд master data, к которому через источник данных подключена таблица Customer.db, мы можем в пределах всего отчета обращаться к полям таблицы с использованием краткой формы. Использование полной формы обращения не приводит к замедлению работы - в ядре FastReport имеется кэш, который хранит обращения к полям БД.

Массивы

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

Пример использования массива:

begin

  MyArr[0] := 'a'; MyArr[1] := 'b'; MyArr[3] := 'd';

  MyArr[2] := MyArr[0] + MyArr[1] + 'c' + MyArr[3];

end;

Фактически значения элементов массива хранятся в списке frVariables в виде

Arr_имя массива_индекс. Т.е. в вышеприведенном примере мы получим содержимое frVariables:

Arr_MyArr_0 := 'a'

Arr_MyArr_1 := 'b'

Arr_MyArr_2 := 'abcd'

Arr_MyArr_3 := 'd'

Константы

В скрипте можно использовать константы. Простейший пример - использование числовых, строковых и логических констант:

begin

  a := 0;

  b := 'abcd';

  c := True;

  d := 'That''s all!';

end;

Обратите внимание на использование одинарной кавычки внутри строковой константы - как и в Pascal, ее надо дублировать: d := 'That''s all!'.

Кроме простых констант, в скрипте доступны константы - названия цветов, стилей шрифта и пр. Вот список констант, которые можно использовать:

·	цвета: clWhite, clBlack и т.п. - все стандартные цвета + системные цвета;

·	результат работы диалогового окна: mrNone, mrOk, mrCancel;

·	служебные: CRLF, Null;

·	стиль шрифта: fsBold, fsItalic, fsUnderline;

·	рамка объекта: frftNone, frftRight, frftBottom, frftLeft, frftTop;

·	выравнивание текста в объекте "Текст": frtaLeft, frtaRight, frtaCenter, frtaVertical, frtaMiddle, frtaDown;

·	выравнивание по бэнду: baNone, baLeft, baRight, baCenter, baWidth, baBottom.

Кроме того, определены константы для подключаемых объектов, например, csCheck для объекта "CheckBoxObject". Все, что можно видеть в выпадающих списках свойств в инспекторе объектов, можно использовать как константу в скрипте.

Обращение к объектам

В скрипте можно обращаться к свойствам и методам объектов отчета. К объектам отчета относятся визуальные объекты, элементы управления, бэнды, страницы отчета, сам отчет. Для обращения к объекту применятся точечная нотация, например: Memo1.Text. Для обращения к собственным свойствам или методам точечная нотация необязательна.

Свойства, к которым возможно обращение, отображены в инспекторе объектов. К некоторым комплексным свойствам (например, Font) возможно обращение как к Font.Name, Font.Size и т.п.:

begin

  Memo1.Font.Name := 'Courier New';

  Memo1.Font.Size := 10;

  Memo1.Font.Color := clRed;

  Memo1.Font.Style := fsBold + fsItalic

end;

К свойствам типа TStrings (Memo, SQL, Items и пр.) возможен доступ по индексу:

if Memo1.Lines[1] = 'a' then

  Memo1.Lines[1] := 'b'

Также к таким свойствам могут применяться операции Add, Delete, Clear и Count:

if Memo1.Lines.Count > 10 then

  Memo1.Lines.Delete(10)

else

begin

  Memo1.Lines.Clear;

  Memo1.Lines.Add('a');

end;

Полный список свойств и методов объектов см. в разделе "Свойства и методы объектов". Следует отметить, что обращение к несуществующему методу или свойству не приведет к сообщению об ошибке. Поэтому следует быть осторожным при написании кода.

Использование процедур и функций

В скрипте могут содержаться вызовы процедур и функций. Особенность интерпретатора, а точнее, парсера, который отвечает за обработку процедур/функций, состоит в том, что процедура или функция может иметь не более трех параметров. В скрипте могут использоваться как встроенные процедуры, так и внешние, определенные в проекте. Список встроенных процедур и функций см. в разделе "Описание встроенных процедур и функций".

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


Модификация объектов

В скрипте можно выполнить любые модификации объекта (либо других объектов) - например, изменение размеров, цвета, содержимого и пр. Следует учесть, что объекты, которые уже обработаны, модифицированы быть не могут. То есть, попытка из объекта, лежащего на бэнде report summary, изменить содержимое объекта из report title, ни к чему не приведет. Однако, сделав отчет двухпроходным, мы сможем выполнить такую модификацию.

Аналогичным образом обстоят дела в случае многостраничного отчета. Мы можем обращаться к любому объекту по его имени (имя в пределах отчета уникально). Но модифицированы могут быть только объекты, которые еще не обрабатывались. Если все же требуется модификация уже обработанного объекта, следует сделать отчет двухпроходным.


Описание встроенных процедур и функций

Агрегатные функции

Могут применяться в бэндах ReportSummary, PageFooter, MasterFooter, DetailFooter, SubdetailFooter, GroupFooter, CrossFooter.

·	Sum(<expression> [,band] [,1]). Вычисляет сумму выражения expression для ряда строк данных. Если параметр band не задан, то сумма считается по строке данных, соответствующей данному бэнду (по бэндам MasterData, DetailData, SubdetailData); иначе сумма считается только по бэнду с именем band. Если в расчет надо включить невидимые бэнды, надо указывать третий параметр (1). Пример использования:

Sum([Part total], Band1);

Sum([[Part total] + [Part price]]);

Sum([Part total], Band1, 1).

·	Avg, Min, Max. Синтаксис аналогичен функции Sum. Функция Avg вычисляет среднее арифметическое, функция Min возвращает минимальное, функция Max - максимальное значение из ряда.

·	Count(<band>). Возвращает количество строк данных. Пример использования:

Count(Band1).

Функции работы со строками

·	Str(<value>). Преобразует число в строку.

·	Copy(<string>, <from>, <count>). Возвращает подстроку (аналогично одноименной функции в Delphi).

·	If(<expression>, <string1>, <string2>). Возвращает строку string1, если выражение expression истинно; иначе возвращает строку string2.

·	FormatFloat(<formatstr>, <value>). Преобразует числовое значение value в строку, используя форматирование formatstr. Возможные значения formatstr описаны в документации к Delphi, раздел «Formatting strings».

·	FormatDateTime(<formatstr>, <value>). Преобразует дату/время value в строку, используя форматирование formatstr. Возможные значения formatstr описаны в документации к Delphi, раздел «Formatting strings».

·	StrToDate(<value>). Преобразует строку в дату.

·	StrToTime(<value>). Преобразует строку во время.

·	UpperCase(<value>). Преобразует символы строки в верхний регистр.

·	LowerCase(<value>). Преобразует символы строки в нижний регистр.

·	NameCase(<value>). Преобразует символы строки в нижний регистр, а первый символ - в верхний.

·	Length(<string>). Возвращает длину строки.

·	Trim(<string>). Отбрасывает пробелы в начале и в конце строки и возвращает результат.

•	Pos(<substring>, <string>). Возвращает позицию подстроки <substring> в строке <string>.

Арифметические функции

·	Int(<value>). Возвращает целую часть числа value.

·	Frac(<value>). Возвращает дробную часть числа.

·	Round(<value>). Возвращает округленное значение.

·	value1 Mod value2. Возвращает остаток от деления value1 на value2.

·	MinNum(<value1>, <value2>). Возвращает меньшее из двух чисел.

·	MaxNum(<value1>, <value2>). Возвращает большее из двух чисел.

Прочие функции

·	Input(<caption> [,<default>]). Выводит на экран диалоговое окно с заголовком caption и строкой ввода. Если задан параметр default, то это значение появится в строке ввода. После ввода пользователя возвращает введенную строку.

·	Date. Возвращает дату начала формирования отчета.

·	Time. Возвращает время начала формирования отчета.

·	Line#. Возвращает номер строки данных; нумерация начинается с начала группы. Например:

Master data

1. Detail data

2. Detail data

3. Detail data

Master data

1. Detail data

2. Detail data

·	LineThrough#. Возвращает номер строки данных; нумерация строк начинается с начала отчета, например:

Master data

1. Detail data

2. Detail data

3. Detail data

Master data

4. Detail data

5. Detail data

·	Column#. Возвращает номер колонки в cross-tab отчете.

·	Page#. Возвращает номер текущей страницы.

·	TotalPages. Возвращает общее количество страниц в сформированном отчете. Для использования этой функции отчет должен быть двухпроходным.

·	DayOf(<date>). Возвращает день даты.

·	MonthOf(<date>). Возвращает месяц даты.

·	YearOf(<date>). Возвращает год даты.

·	MessageBox(<text>, <caption>, <buttons_and_icons>). Выводит стандартное окно диалога с текстом <text> и заголовком <caption>. Набор кнопок и иконка окна задается в параметре <buttons_and_icons>. Возвращает значение, соответствующее нажатой кнопке (mrOk, mrCancel, mrYes, mrNo). В качестве <buttons_and_icons> можно использовать значения:

Кнопки	Иконка
mb_Ok  mb_OkCancel  mb_YesNo  mb_YesNoCancel	_IconError mb_IconQuestion   mb_IconInformation   mb_IconWarning

Процедуры и функции для манипуляции построением отчета

·	CurY. Возвращает текущую позицию по Y (в пикселах), с которой будет выведен очередной бэнд. Этому свойству можно также присвоить нужное значение для смены позиции. Это позволяет строить довольно экзотические отчеты.

·	FreeSpace. Возвращает высоту оставшегося свободного места на странице в пикселах.

·	FinalPass. Возвращает истину, если отчет двухпроходный и выполняется последний проход.

·	PageHeight. Возвращает высоту страницы в пикселах с учетом высоты бэнда Page footer.

·	PageWidth. Возвращает ширину страницы в пикселах.

·	StopReport. Останавлявает построение отчета.

·	NewPage. Начинает формирование отчета с новой страницы.

·	NewColumn. Начинает формирование отчета с новой колонки, если отчет многоколоночный.

·	ShowBand(<band>). Показывает бэнд <band>.


Дополнительные функции

Помимо основных функций в Генераторе отчета есть дополнительные функции для работы с параметрами, переданными из Digitals. Находятся они в категории Digitals. Рассмотрим подробнее каждую из них.

OBJCOUNT. Применяется для определения количества объектов для конкретного типа отчета. Так, для одиночного отчета количество объектов всегда будет 1, для пофамильного - количеству участков одного землепользователя, а для группового - общему количеству участков (количеству помеченных в Digitals).

CHILDCOUNT(<Объект>). Применяется для определения количества внутренних объектов для конкретного номера объекта. При указании номера объекта необходимо учитывать то, что для одиночного отчета номер объекта всегда будет 1, для пофамильного - от 1 до количества участков одного землепользователя, а для группового - от одного до общего количества участков. Допускается вложение функции вместо параметра <Объект>.

PARAM(<Номер>,<Объект>,[<Подобъект>]). Позволяет извлечь параметр объекта (текст, число) или параметр внутреннего объекта (угодия), если указан третий параметр функции.

<Номер> - это ни что иное, как ID параметра Digitals.

<Объект> - номер объекта (по аналогии с предыдущей функцией).

<Подобъект> - номер внутреннего объекта (угодия) для конкретного номера объекта (см. <Объект>). При указании номера подобъекта необходимо учитывать, что номер объекта не должен превышать количество внутренних объектов.

В случае отсутствия третьего параметра функции, извлекаться будет параметр самого объекта (участка).

Для создания таблиц параметров объектов (подобъектов) с применением Бендов следует применять вместо конкретных значений <Объект> и <Подобъект> нулевые значения (0). Программа автоматически "найдет"  данные соответствующего объекта.

Допускается использовании функции вместо параметров <Номер>, <Объект>, <Подобъект>.

FINDID(<Дескриптор>). Позволяет определить ID параметра по первым двум символам в названии параметра (<Дескриптор>).

В основном применяется для определения ID параметров, имеющих две заглавные буквы в названии (дескриптор в обменном файле *.in4). Пользователь может сам создать в менеджере параметров в Digitals название параметра с двумя любыми символами в начале названия параметра.

Примечание. Чтобы нежелательные параметры не передавались в обменный файл, после дескриптора достаточно поставить символ подчеркивания (_).

GET(<Номер>,<Строка>). Позволяет извлечь части параметра <Строки>, разделенные запятой (,) или вертикальной чертой (|). Функция аналогична одноименной функции Digitals.

<Номер> - номер(а) фрагмента(-ов) параметра, разделенные запятой (,) или прямым флешем (|). Для <Номер> допустимы такие значения: номер подпараметра (например 1 или 3); номера подпараметров через дефис (например 1-3); номер подпараметра/номер слова (например 1/2 или 1/-1), где в первом примере извлечется второе слово первого фрагмента, а во втором примере извлечется весь фрагмент кроме первого слова.

<Строка> - строка символов. Допускается вложение функции вместо параметра <Строка> (например ф-ция PARAM).

NUMTOSTR(<Число>[,<Язык>]). Возвращает <Число> прописью. Если задано значение "1" или "Russian"  параметра <Язык>, то используется русский язык, иначе - украинский.

MONEY(<Число>,<Вариант>). Позволяет получить соответствующее склонение наименования денежной единицы из предоставленных <Вариантов>, в зависимости от заданного <Числа>. Примеры значения параметра <Вариант>:

гривна;гривны;гривен

рубль;рубля;рублей

OWNERCOUNT(<Номер>[,<Число>]). Определяет количество записей, разделенных вертикальной чертой (|)   по значению параметра Digitals, идентификатор которого <Номер> или принимает количество записей равной <Числу>, если задан второй параметр и устанавливает это значение, как количество записей для текущего бэнда. Для корректной работы данной функции необходимо использовать ее в скрипте  дата-бэнда. Пример использования данной функции можно найти в шаблоне RegCard.frf.

GETOWNER(<Строка>[,<Число>]). Данная функция предназначена для получения текущего элемента из <Строки>, представляющего собой список значений, разделенных вертикальной чертой (по аналогии с предыдущей функцией). Номер элемента определяется номером текущей записи дата-бэнда или <Числом>, если задан второй параметр. Пример использования данной функции можно найти в шаблоне RegCard.frf.

FIO(<Строка>). Возвращает сокращенную форму ФИО <Строки>

FIR(<Строка>). Возвращает сокращенную форму ФИО <Строки> в родительном падеже

FID(<Строка>). Возвращает сокращенную форму ФИО <Строки> в дательном падеже

FIV(<Строка>). Возвращает сокращенную форму ФИО <Строки> в винительном падеже

FIT(<Строка>). Возвращает сокращенную форму ФИО <Строки> в творительном падеже

FIP(<Строка>). Возвращает сокращенную форму ФИО <Строки> в предложном падеже

ROP(<Строка>). Возвращает <Строку> в родительном падеже

DAP(<Строка>). Возвращает <Строку> в дательном падеже

VIP(<Строка>). Возвращает <Строку> в винительном падеже

TVP(<Строка>). Возвращает <Строку> в творительном падеже

PRP(<Строка>). Возвращает <Строку> в предложном падеже

В процессе доработки программы возможно пополнение списка функций новыми функциями и процедурами.


Свойства и методы объектов

Все визуальные объекты отчета имеют следующие свойства и методы, к которым можно обращаться из скрипта:

Свойство	Тип	Описание
BandAlign		Выравнивание внутри бэнда. Одна из констант   baNone, baLeft, baRight, baCenter, baWidth, baBottom.
Enabled		Разрешает или запрещает работу объекта.
FillColor		Цвет фона объекта. Может быть задан константой clXXX.
FrameColor		Цвет рамки объекта.
FrameStyle		Стиль линии рамки. Одна из констант psSolid, psDash, psDot, psDashDot, psDashDotDot, psDouble.
FrameTyp		Тип рамки объекта - набор констант frftTop, frftBottom, frftLeft, frftRight.
FrameWidth		Толщина рамки.
Height		Высота объекта.
Left		Координата Х левого верхнего угла объекта.
Memo		Текст, находящийся в мемо объекта. К этому свойству можно также обращаться с использованием индекса, например: Memo[1].
Memo.Count		Возвращает количество строк в мемо.
Name		Имя объекта.
Stretched		Является ли объект растягиваемым.
Top		Координата Y левого верхнего угла объекта.
Visible		Видимость объекта.
Width		Ширина объекта.

Методы:

Метод	Параметры	Описание
Hide		Аналогично установке Visible := False.
Memo.Add		Добавляет строку в мемо.
Memo.Clear		Очищает мемо.
Memo.Delete		Удаляет строку с данным индексом из мемо.
Show		Аналогично установке Visible := True.
Стандартные объекты

Объект "Текст"

Помимо общих свойств и методов, которые были рассмотрены выше, объект имеет собственные свойства:

Свойство	Тип	Описание
Alignment		Выравнивание текста внутри объекта. Набор значений frtaLeft, frtaRight, frtaCenter, frtaVertical, frtaMiddle, frtaDown.
AutoWidth		Если True, ширина объекта устанавливается равной ширине имеющегося в объекте текста.
CharSpacing		Рассстояние между символами.
Font.Name		Имя шрифта, которым будет выведен текст объекта.
Font.Size		Размер шрифта.
Font.Style		Стиль шрифта. Набор констант fsBold, fsItalic, fsUnderline.
Font.Color		Цвет шрифта.
GapX		Промежуток между рамкой объекта и текстом.
GapY		Промежуток между рамкой объекта и текстом.
HideZeros		Если True, не выводить нулевые значения переменных.
LineSpacing		Расстояние между строками текста.
Suppress		Подавлять повторяющиеся значения.
TextOnly		Если True, обработка переменных не производится.
WordBreak		Переносить слова по слогам (только русские слова).
WordWrap		Переносить длинные слова на следующую строку.

Методы: нет.

Объект "Бэнд"

Свойство	Тип	Описание
Breaked		Бэнд является разрываемым.
ChildBand		Дочерний бэнд.
ColumnGap		Промежуток между колонками.
Columns		Количество колонок у дата-бэнда.
ColumnWidth		Ширина колонки.
Condition		Условие группировки для бэнда group header.
DataSource		Источник данных для дата-бэнда.
EOF		, если достигнут конец набора записей, связанного с бэндом.
FormNewPage		Формировать новую страницу после печати бэнда и всех его детальных бэндов.
Master		Бэнд, по которому выполняется группировка.
OnFirstPage		Печатать на первой странице.
OnLastPage		Печатать на последней странице.
PrintChildIfInvisible		Печатать дочерние (child) бэнды, если родительский бэнд невидимый.
PrintIfSubsetEmpty		Печатать бэнд, если его детальный список пуст.
RepeatHeader		Повторять бэнд на новой странице.
Методы:

Метод	Параметры	Описание
First		Устанавливает источник данных, связанный с бэндом, на первую запись.
Next		Устанавливает источник на следующую запись.
Prior		Устанавливает источник на предыдущую запись.

Объект "Рисунок"

Свойство	Тип	Описание
BlobType		Тип рисунка, содержащегося в BLOb-поле. Одна из констант btBMP, btJPG, btICO, btWMF.
Center		Центрировать рисунок внутри объекта.
DataField		поле таблицы, содержащее рисунок.
KeepAspect		Сохранять пропорции рисунка при растягивании.

Методы: нет.

Подключаемые объекты

Объект "Штрихкод"

Свойство	Тип	Описание
DataField		Поле таблицы, содержащее данные.

Методы: нет.

Объект "CheckBox"

Свойство	Тип	Описание
CheckColor		Цвет крестика.
CheckStyle		Стиль (крестик/галочка). Константы csCross, csCheck.
DataField		Поле таблицы, содержащее данные.

Методы: нет.

Объекты "RichText", "RichText 2.0"

Свойство	Тип	Описание
GapX		Промежуток между рамкой объекта и текстом.
GapY		Промежуток между рамкой объекта и текстом.
TextOnly		Если True, обработка переменных не производится.
DataField		поле таблицы, содержащее данные.

Методы: нет.

Объект "Прямоугольник с тенью"

Этот объект является потомком объекта "Текст". Следовательно, он имеет тот же набор свойств и методов, что и родитель, и кое-что свое:

Свойство	Тип	Описание
BeginColor		Начальный цвет градиентной заливки.
EndColor		Конечный цвет градиентной заливки.
Gradient		Использовать градиентную заливку.
RoundRect		Использовать закругление.
RoundSize		Размер закругения.
ShadowColor		Цвет тени.
ShadowWidth		Ширина тени.
Style		Стиль градиентной заливки. Одна из констант gsVertical, gsHorizontal, gsElliptic, gsRectangle, gsHorizCenter, gsVertCenter.
Методы: нет.

Объект "Фигура"

Свойство	Тип	Описание
Shape		Тип фигуры. Одно из значений skRectangle, skRoundRectangle, skEllipse, skTriangle, skDiagonal1, skDiagonal2.

Методы: нет.

Элементы управления

Все элементы управления имеют общий набор свойств и методов:

Свойство	Тип	Описание
Color		Цвет фона объекта.
Enabled		Разрешает или запрещает работу объекта.
Font.Name		Имя шрифта, которым будет выведен текст объекта.
Font.Size		Размер шрифта.
Font.Style		Стиль шрифта. Набор констант fsBold, fsItalic, fsUnderline.
Font.Color		Цвет шрифта.
Height		Высота объекта.
Left		Координата Х левого верхнего угла объекта.
Name		Имя объекта.
Top		Координата Y левого верхнего угла объекта.
Visible		Видимость объекта.
Width		Ширина объекта.
Методы:

Метод	Параметры	Описание
Hide		Аналогично установке Visible := False.
SetFocus		Передает фокус ввода элементу управления.
Show		Аналогично установке Visible := True.

Объект "Label"

Свойство	Тип	Описание
Alignment		Выравнивание строки текста внутри рамок объекта. Одно из значений taLeftJustify, taRightJustify, taCenter.
AutoSize		Установка ширины объекта равной максимальной ширине имеющегося в нем текста.
Caption		Собственно строка текста.
WordWrap		Перенос слов внутри объекта. При этом свойство AutoSize должно быть False.

Методы: нет.

Объект "Edit"

Свойство	Тип	Описание
ReadOnly		Запрещает модифицировать строку текста.
Text		Текст, который будет показан в элементе управления по умолчанию.

Методы: нет.

Объект "Memo"

Свойство	Тип	Описание
Lines		Строки текста, который будет выведен по умолчанию. К свойству можно обращаться по индексу: Memo1.Lines[0].
Lines.Count		Количество строк текста.
ReadOnly		Запрещает модифицировать текст.
Text		Строки текста, представленные в виде одной строки (с символами CR+LF).

Методы:

Метод	Параметры	Описание
Lines.Add		Добавляет строку.
Lines.Clear		Очищает строки.
Lines.Delete		Удаляет строку с данным индексом.

Объект "Button"

Свойство	Тип	Описание
Caption		Заголовок кнопки.
ModalResult		Определяет, надо ли завершать работу диалогового окна при нажатии на кнопку и какой результат при этом возвращать. Одна из констант mrNone, mrOk, mrCancel.

Методы: нет.

Объект "CheckBox"

Свойство	Тип	Описание
Alignment		Позиция надписи по отношению к флажку. Одна из констант taLeftJustify, taRightJustify.
Caption		Поясняющая надпись.
Checked		Состояние флажка (включен/выключен).

Методы: нет.

Объект "RadioButton"

Свойство	Тип	Описание
Alignment		Позиция надписи по отношению к переключателю. Одна из констант taLeftJustify, taRightJustify.
Caption		Поясняющая надпись.
Checked		Состояние переключателя (включен/выключен).

Методы: нет.

Объект "ListBox"

Свойство	Тип	Описание
Items		Строки текста. К свойству можно обращаться по индексу: ListBox1.Items[0].
ItemIndex		Номер выбранной строки.
Items.Count		Количество строк.

Методы:

Метод	Параметры	Описание
Items.Add		Добавляет строку.
Items.Clear		Очищает строки.
Items.Delete		Удаляет строку с данным индексом.

Объект "ComboBox"

Свойство	Тип	Описание
Items		Строки текста. К свойству можно обращаться по индексу: ComboBox1.Items[0].
ItemIndex		Номер выбранной строки.
Items.Count		Количество строк.
Style		Тип элемента. Одно из значений csDropDown, csDropDownList, csLookup.
Text		Выбранное значение.

Методы:

Метод	Параметры	Описание
Items.Add		Добавляет строку.
Items.Clear		Очищает строки.
Items.Delete		Удаляет строку с данным индексом.


Применение

Вот некоторые простые примеры использования интерпретатора:

1.	Необходимо вывести сумму заказа: белым фоном, если сумма меньше 2000; зеленым, если сумма от 2000 до 10000; красным, если сумма больше 10000. Для этого в объекте с суммой необходимо набрать следующий скрипт:

if [Сумма] < 2000 then

  FillColor := clTransparent

else if [Сумма] < 10000 then

  FillColor := clGreen

else

  FillColor := clRed

Цвет можно задать числом, например:

FillColor := 128 + 128*256 + 128*65536 //(серый цвет)

2.	Необходимо вывести те записи, для которых сумма заказа больше 2000. Для этого в бэнде необходимо набрать следующий скрипт (редактор можно вызвать из инспектора объектов):

if [Сумма] > 2000 then

  Visible := 1 else

  Visible := 0

3. 	Пользуясь функцией FreeSpace, которая возвращает размер свободного места на листе, и процедурой NewPage, которая начинает печать с новой страницы (или NewColumn – с новой колонки), можно управлять процессом формирования отчета. Например: если места осталось меньше 30мм, начать печать со следующего листа. Для этого в скрипте нужного бэнда необходимо набрать следующее:

if FreeSpace * 5/18 < 30 then NewPage

4. 	Для того, чтобы вывести бэнд Report summary внизу страницы, используйте следующий код в скрипте этого бэнда:

CurY := PageHeight - Height


Обзор разделов главного меню

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

Документ  Дизайнер  Масштаб  Навигация

Раздел Помощь содержит список последних изменений программы (Что нового...), вызов содержимого файла помощи (Содержание) и команду, которая выводит на экран информацию о программе (О программе...).

Вызвав окно О программе... можно обновлять программы по Интернет, просматривать данные о подключенных компонентах, заказывать обновление и добавление новых компонентов.


Раздел "Документ"

Содержит команды для работы с файлами документов и выводом на печать


Команда "Сформировать отчет"

Эта команда позволяет сформировать отчет в случае, если отключено автоматическое формирование отчета (см. Настройки).


Команда "Открыть отчет"

Эта команда позволяет открыть документ с расширением *.frp, сохраненный ранее командой Сохранить отчет. При этом документ может быть отредактирован и сразу же распечатан.


Команда "Сохранить отчет"

Эта команда позволяет сохранить созданый (сформированный) документ с расширением *.frp. При этом документ в дальнейшем может быть открыт командой Открыть отчет, отредактирован и сразу же распечатан.


Команда "Параметры страницы"

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


Команда "Печать"

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


Команда "Печатать все"

Данная команда позволяет выдать на печать определенный отчет по всем объектам из выпадающего списка. Для типа отчета одиночный - это будут все объекты, помеченные в Digitals (участки), а для пофамильного отчета - все землепользователи. Для группового отчета эта команда теряет смысл, поэтому для этого типа отчета она неактивна.


Команда "Выход"
Команда "Выход" Клавиша <Alt><F4>

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


Раздел "Дизайнер"

Содержит команды для манипулирования шаблонами документов и редактирования документов


Команда "Создать шаблон"

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


Команда "Правка документа"

Запускает Дизайнер для редактирования текущей страницы сформированного отчета.


Команда "Правка шаблона"

Этой командой открывается файл шаблона текущего документа в Дизайнере для дальнейшей правки (редактирования). Расширение файла *.frf (FastReport Form).


Команда "Пакеты документов"

С помощью этой команды открывается диалоговое окно Редактирование пакетов документов и у пользователя есть возможность отредактировать структуру и тематику документов, которые должны отображаться в основоном дереве программы и в окне предварительного просмотра сформированного документа.

В диалоговом окне имеется ряд функциональных кнопок.

Кнопка Создать категорию создает новую категорию и помещает её в конце дерева.

Кнопка Создать документ создает новый документ и помещает его в конце текущей на данный момент категории последним документом.

Если пользователь создает новую категорию или новый документ, их имена первоначально устанавливаются в "Категория №" или "Документ №". При необходимости можно отредактировать название категории или документа. Для этого помечаем название и используем клавишу F2 или щелкаем на названии категории (документа). Таким образом активизируется режим редактирования.

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

Для отображения физического пути к файлу документа (расширение *.frf) на диске служит нижняя строка с изображением папки. Для этого необходимо пометить документ, к которому нужно указать путь, выбрать одну из закладок "Одиночный", "Пофамильный" или "Групповой" в зависимости от того в каком типе отчета он будет использоваться и нажать на изображении папки внизу. При этом откроется стандартное диалоговое окно. Укажите на файл на диске, который будет использоваться как шаблон и подтвердите выбор файла кнопкой Открыть. При этом в окне слева от изображения папки отобразиться физический путь к файлу.

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

После произведенных изменений для сохранения воспользуйтесь кнопкой OK, для отмены произведенных изменений используем кнопку Cancel.


Команда "Настройки"

С помощью этой команды открывается диалоговое окно Настройки и у пользователя есть возможность задать  требуемые опции.

ФИО владельца

Код ФИО владельца - код или дескриптор параметра, в котором находится имя владельца участка

Сортировать список владельцев - включает/отключает сортировку по параметру, заданному кодом ФИО владельца

Сортировка

Кроме сортировки объектов по ФИО владельца, можно также сортировать объекты по любому другому параметру, который задается полем по параметру. При чем, сначала производится сортировка по этому параметру, а после того уже по ФИО владельца. На выбор можно сортировать объекты по возрастанию или убыванию. Опция Сортировать объекты - включает/отключает данную сортировку. Как и в предыдущем случае, можно задавать, как код параметра, так и дескриптор.

Назначение угодия

В этом поле вводится Код назначения угодия, который используется для выдачи экспликации с использованием функции Expl. Как и в предыдущих случаях, можно задавать, как код параметра, так и дескриптор.

Целевое назначение

В поле Код целевого назначения задается код или дескриптор параметра, который будет использоваться для группировки объектов (земельных участков) по целевому назначению при выдаче экспликации. См. шаблон Экспликация. Группировку можно включать/отключать опцией Группировать по целевому назначению.

Автоматическое формирование отчета

При необходимости можно отключать автоматическое формирование отчета, которое происходит при запуске программы, выборе другого пользователя, переходе между документами, выборе другого Типа отчета и по окончании редактирования шаблона. В таком случае, чтобы сформировать отчет используется команда Документ|Сформировать отчет


Раздел "Масштаб"

Содержит команды масштабирования документа при выводе на экран


Команда "Масштабирование по ширине"

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


Команда "Масштабирование по высоте"

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


Команда "Масштабирование на две страницы"

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


Раздел "Навигация"

Содержит команды для навигации по документу


Команда "На следующую страницу"

Эта команда позволяет пользователю перейти на следующую страницу сформированного документа.


Команда "На предыдущую страницу"

Эта команда позволяет пользователю перейти на предыдущую страницу сформированного документа.


Команда "На первую страницу"

Эта команда позволяет пользователю перейти на первую страницу сформированного документа.


Команда "На последнюю страницу"

Эта команда позволяет пользователю перейти на последнюю страницу сформированного документа.


Раздел "Помощь"

Данный раздел содержит команды вызова справки и информации о программе.


Команда "Содержание"

По данной команде открывается данный файл справки


Команда "О программе"

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


Главная панель

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

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