Глава 12. Применение в землеустройстве
открытия диалога выбора файла формата FR3. Шаблоны FastReport обычно хранятся в подпапке Templates программной папки.
Документу можно назначить разные файлы шаблонов для каждого из типов отчетов. Для этого, перед назначением, следует перейти на соответствующую закладку: Одиночный, Пофамильно, Групповой. Универсальные шаблоны разрабатывать довольно трудоемко, поэтому иметь три разных шаблона для одного документа это обычная практика.
С другой стороны, в разных категориях не запрещено использовать одни и те же файлы шаблонов. В особенности, если в составе той или иной землеустроительной документации (категории) используются одни и те же документы.
•Кнопка Удалить. Удаляет категорию или документ. Отметим, что при удалении документа из дерева реальные файлы шаблонов на диске не пострадают.
Рисунок 12.11. Диалог “Редактирование пакета документов”
Окно настроек можно вызвать из меню Дизайнер > Настройки… или кнопкой панели инструментов
Настройки. Внешний вид диалога показан на Рис.12.12.
Рисунок 12.12. Диалог настроек модуля Digitals Reports
Кратко пройдем по настройкам:
306
IN4+FastReport
•В поле ввода Код ФИО владельца указывается параметр, содержащий имена землепользователей. Параметр можно задать по коду или тегом IN4. Отметьте также “галочку” Сортировать список владельцев, чтобы их удобнее было искать в выпадающем списке имен и в самом отчете.
•В группе Сортировка можно задать пользовательскую сортировку объектов (то есть участков). Отчет с отсортированными по какой-либо системе участками смотрится гораздо опрятнее, особенно если участков много.
•В группе Назначение угодия указывается тег параметра, содержащего коды угодий (имеется в виду коды по какой-либо земельной классификации, обычно по форме 6-зем).
•Группа Целевое назначение отвечает за группировку участков по тегу целевого назначения для группового отчета.
•Галочки Автоматическое формирование отчета, Выдавать ошибку при отсутствии параметра,
Спрятать левую панель управляют поведением и интерфейсом модуля Reports и говорят сами за себя.
Чтобы разобраться с созданием шаблонов, нужно понять, как передаются данные из карты в отчет, а также, как происходит обращение к этим данным на страницах отчета.
Передача данных в модуль отчетов происходит весьма элегантным способом - через буфер обмена. Фактически, во время запуска модуля Reports, неявно формируется текстовый отчет типа Комбинированный список, настройки которого сохранены в шаблоне Reports.rep (Смотрите выше раздел «Создание простых текстовых отчетов»).
Упомянутый шаблон Reports.rep обеспечивает передачу всех параметров помеченных объектов карты, координаты их контуров, а также параметры дочерних объектов (что обеспечивает отчет данными для формирования экспликации).
Настройки шаблона Reports.rep подойдут для большинства случаев. Единственной значимой причиной что-либо изменить может быть желание переупорядочить колонки каталога координат. Дело в том, что в модуле отчета мы ссылаемся на эти данные “как есть”, поэтому формат каталога практически целиком зависит от сформированного текстового отчета.
Чтобы настроить формат передачи каталога следует:
1.Запустить диалог Формирование отчета с помощью команды Сервис > Отчет….
2.Нажать кнопку Шаблон и из выпадаюшего меню выбрать Reports. Диалог примет сохраненные настройки.
3.Измените строку формата каталога координат в выпадающем списке Формат.
Как правило, не имеет смысла передавать меньше данных, чем предусмотрено сторокой формата по умолчанию. В конце концов, ненужные колонки несложно проигнорировать при редактировании шаблона FastReport уже в среде дизайнера отчетов. То же касается и порядка колонок.
Обычно пользователи убирают или наоборот добавляют суммы длин и/или внутренних углов (звездочки в строке формата NI*AL*XY). Еще одна причина отредактировать строку формата - это замена символа N на P, которая приводит к тому, что вместо порядкового номера узла в контуре участка будут выводиться имена поворотных точек из точечных объектов, совпадающих с узлами контура.
4.Нажмите кнопку Создать отчет и убедитесь в правильности ожидаемого результата.
5.Если все в порядке, нажмите кнопку Создать… и пересохраните настройки в файле Reports.rep.
После получения данных, Reports выполняет их разбор, сортировку и группировку в соответствии с настройками модуля. Далее данные в виде датасетов (или источников данных) передаются ядру FastReport, вместе с файлом шаблона для генерации отчета.
Ядро FastReport “сканирует” шаблон, подставляя в предусмотренные дизайнером элементы данные из датасетов. Данные могут быть предварительно обработаны в скриптах событий, связанных с элементами. При необходимости, для отчета также можно предусмотреть формы ввода дополнительных данных,
307
Глава 12. Применение в землеустройстве
которые будут автоматически вызваны перед стартом обработки. В этих формах можно ввести данные, которых нет в карте, но которые требуются для данного типа отчета.
Файлы шаблонов документов модуля Reports хранятся в формате FastReport FR3. Для разработки шаблонов в модуль встроен Дизайнер отчетов FastReport, который представляет собой систему для визуального проектирования отчета со встроенным Pascal-подобным языком программирования. Такой подход открывает более чем широкие возможности для построения любых документов.
Итак, помечаем участок и вызываем генератор отчетов. Далее действуем следующим образом:
•Чтобы отредактировать существующий шаблон, укажите тип отчета, выберите документ в дереве категорий - словом, выполните те же действия, что и при генерации документа. Далее нажмите кнопку
Правка шаблона или выполните соответствующую команду из меню Дизайнер.
Откроется окно дизайнера FastReport, в который будет автоматически загружен файл шаблона отчета, ассоциированный с выбранным документом. Теперь можно вносить изменения.
•Чтобы создать шаблон на базе другого шаблона, выполните те же действия для документа, который послужит базой для нового шаблона.
После открытия окна дизайнера, сохраните документ под новым именем (обычно в папку Templates). Теперь отредактируйте шаблон. После выхода из дизайнера, назначьте новый шаблон одному из документов в редакторе пакетов.
•Чтобы создать новый шаблон, выберите любой документ, а затем выполните команду меню Дизайнер
> Создать шаблон.
Откроется окно дизайнера с пустым документом. Создайте и разместите в шаблоне требуемые элементы. После выхода из дизайнера, ассоциируйте новый шаблон с одним из документов.
Давайте попробуем отредактировать шаблон каталога координат. Для этого воспользуемся все тем же файлом Пример (2 участка).dmf, выберем тип отчета Одиночный и документ Каталог координат из категории Приватизація. Примерный вид окна дизайнера с загруженным в него шаблоном Catalog.fr3 показан на Рис.12.13.
Как можно видеть, дизайнер представляет собой полноценное приложение с главным меню, панелями инструментов и рабочим полем, где и происходит разработка шаблона.
Панели инструментов и команды меню призваны обеспечить вас всем необходимым для работы. Здесь есть кнопки вставки в шаблон различных элементов, кнопки для настройки стиля отображения и выравнивания элементов отчета, не забыты и стандартные кнопки для открытия и сохранения.
Рабочее поле организовано в виде закладок.
•На закладке Код находится программный скрипт всех функций, связанных с элементами шаблона, а также с самим шаблоном. Обычно код выполняется по определенному событию - чаще всего по событию OnBeforePrint, которое возникает перед выводом элемента на экран или принтер.
•Закладка Данные шаблона отчета пуста, но будьте уверены, что все необходимые датасеты к нашему шаблону уже подключены. В каждом шаблоне доступны четыре датасета, сформированные для нас модулем Reports (чтобы проверить это, выполните команду меню Отчет > Данные):
ObjDataset
Хранит параметры помеченных объектов. Общее количество объектов возвращает функция ObjCount. Обращаться к параметрам можно по ссылке с номером вида [FP0] (для фиксированных параметров) или [P2] (для остальных).
Впрочем, есть более удобный способ - воспользоваться услугами функции Param(ИмяТегаIN4). Например, ссылка [Param('NM')] извлечет имя землепользователя.
В рамках шаблона отчета все ссылки на параметры, переменные скрипта и функции заключаются в [ ] квадратные скобки. Такие ссылки можно смешивать со статическим текстом
308
IN4+FastReport
(то есть с постоянной его частью). Обратите внимание, что строковые значения берутся в одинарные кавычки.
ChildDataset
Данные дочерних объектов. Узнать, сколько дочерних объектов имеется у объекта с номером N, можно с помощью функции ChildCount(N). Для доступа к параметрам дочерних объектов применяется версия функции Param с дополнительными аргументами.
ExplDataset
Данные по угодиям объекта (то есть его экспликация). Например, ссылка [Expl05] отобразит площадь угодий с кодом 05. (Где искать коды угодий, мы указали в настройках модуля Reports - в параметре с тегом CN.)
CatDataset
Каталог координат объекта. Каталог передается в виде столбцов данных, в соответствии с шаблоном текстового отчета Reports.rep. Обращение к столбцам каталога происходит по ссылкам вида [Col0], [Col1] и так далее, до последнего столбца.
•Закладки страниц отчета. В рассматриваемом шаблоне есть только одна страница - Page1, но в общем случае их может быть больше. Кроме страниц, в отчете могут присутствовать формы ввода данных с именами вида DialogPage1.
На странице размещаются элементы (объекты) шаблона, которые и задают внешний вид и содержимое будущего документа.
Рисунок 12.13. Окно дизайнера отчетов FastReport
Опишем элементы, которые чаще всего используются в шаблонах отчетов. За более подробной информацией вам придеться обратиться к справочной системе модуля Reports и дизайнера Fastreport.
Страница
Документация еще называет ее формой отчета. Служит подосновой для остальных элементов. Может иметь различный формат.
309
Глава 12. Применение в землеустройстве
Бэнд
Бэнд (или иначе “полоса”) это, пожалуй, основной строительный элемент для структурирования табличного отчета. Бэнды разделяют на служебные (заголовки, “подвалы”) и дата-бэнды (то есть бэнды, содержащие данные). Последние выводятся столько раз, сколько строк имеется во входных данных.
Бэнды могут образовывать что-то вроде иерархии. Например, после данных полученных из участка (первого), выводятся данные каталога координат (N точек). Далее снова повторяется бэнд участка (второго) и опять координаты точек - и так далее, до исчерпания всех выбранных для отчета участков.
Именно по этому принципу строится шаблон отчета, показанный на Рис.12.13.
Текст
Иначе называется мемо. Вероятно, самый популярный отображаемый элемент. Может содержать как статический текст, так и ссылки. Может иметь обрамление, может выводиться с различным стилем и цветом шрифта, умеет выравнивать текст в пределах элемента и даже менять направление текста на один из фиксированных углов.
RichText
Элемент предназначен для отображения форматированных многострочных текстов в формате RTF. Позволяет задавать выравнивание абзацев, стили шрифта для отдельных частей текста и так далее.
Рисунок
Позволяет загрузить и отобразить выбранный растровый файл. Загрузку можно выполнять и динамически, например, в обработчике события.
Фигура
Различные геометрические фигуры, применяемые для оформления отчета. Здесь имеются линии, прямоугольники, эллипсы, ромбы, стрелки и многое другое.
FastReport - это объектно-ориентированная система. Все элементы отчета, включая сам отчет, страницы, бэнды, текстовые элементы (мемо), рисунки и прочее являются объектами, каждый из которых имеет свой набор свойств и событий.
Каждый элемент шаблона (объект) имеет имя и программный тип (собственно, тип и делает объект тем чем он есть - рисунком или мемо). Через свое имя объекты шаблона доступны в программном коде скрипта шаблона. Имя и свойства выбранного объекта можно посмотреть и изменить в панели Инспектора. Там же происходит назначение событий.
В этой книге мы уже не раз говорили о функциях, использующихся при описании производных параметров и в шаблонах документов DMT. Разумеется, что такая мощная система, как FastReport, также имеет в своем арсенале подобный инструментарий.
Функции, доступные в FastReport, можно найти на закладке Функции в панели Дерево данных. Здесь каждая функция включена в определенную категорию: Математические, Строки, Форматирование и другие.
Особый интерес вызывает категория Digitals. В эту категорию включены функции, аналогичные тем, что используются при работе с шаблонами DMT. В силу особенностей синтаксиса языка PascalScript, конкретный способ вызова функции может несколько отличаться от рассмотренного ранее. Некоторые функции имеют другое имя, а где-то меняется набор аргументов. Общим для всех функций является то, что строковые агрументы следует заключать в одинарные кавычки.
При выборе конкретной функции из списка, в нижней части панели появляется ее описание, поэтому формального обзора мы здесь делать не будем. Вместо этого дадим несколько примеров использования из реального шаблона Catalog.fr3.
Еще раз напомним, что вызовы функций и переменные скриптов в текстовых элементах шаблона FastReport заключаются в [ ] квадратные скобки. В тексте скрипта, напротив, функции используются как есть. Хорошее описание основных функций категории Digitals
имеется в справке модуля Reports в разделе Ядро генератора отчетов > Построение автономных отчетов > Языковые средства > Дополнительные функции.
310