Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Digitals.pdf
Скачиваний:
73
Добавлен:
28.06.2022
Размер:
9.86 Mб
Скачать

Глава 12. Применение в землеустройстве

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

Дизайнер отчетов FastReport

Файлы шаблонов документов модуля 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 - это объектно-ориентированная система. Все элементы отчета, включая сам отчет, страницы, бэнды, текстовые элементы (мемо), рисунки и прочее являются объектами, каждый из которых имеет свой набор свойств и событий.

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

Понятие о языке скриптов PascalScript. Функции.

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

Функции, доступные в FastReport, можно найти на закладке Функции в панели Дерево данных. Здесь каждая функция включена в определенную категорию: Математические, Строки, Форматирование и другие.

Особый интерес вызывает категория Digitals. В эту категорию включены функции, аналогичные тем, что используются при работе с шаблонами DMT. В силу особенностей синтаксиса языка PascalScript, конкретный способ вызова функции может несколько отличаться от рассмотренного ранее. Некоторые функции имеют другое имя, а где-то меняется набор аргументов. Общим для всех функций является то, что строковые агрументы следует заключать в одинарные кавычки.

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

Еще раз напомним, что вызовы функций и переменные скриптов в текстовых элементах шаблона FastReport заключаются в [ ] квадратные скобки. В тексте скрипта, напротив, функции используются как есть. Хорошее описание основных функций категории Digitals

имеется в справке модуля Reports в разделе Ядро генератора отчетов > Построение автономных отчетов > Языковые средства > Дополнительные функции.

310

IN4+FastReport

[Who]

Выводит переменную с именем Who, которая определена в коде события соответствующего текстового элемента. (Смотрите код ниже.)

[PARAM('NM')], [PARAM('AS')]

Извлекает данные участка по тегу формата IN4. В данном случае это имя землепользователя и площадь участка.

Ділянка № <b>[Num]</b>

Обращение к переменной Num, определенной в коде. Как видите, переменная включена в статический текст. Обратите также внимание на символы форматирования <b> </b>, которые включают и отключают вывод жирным шрифтом.

Обчислив: [FILE('Setup.ini','Обчислив')]

Обращение к аналогу DMT функции FIL, которая извлекает текстовые константы из файла.

Теперь, пожалуй, стоит познакомиться с языком PascalScript. Чтобы не быть голословными, приведем фрагмент скрипта из шаблона Catalog.fr3, с которым мы познакомились выше. Вот текст кода:

var

Num,Who: string;

procedure Memo33OnBeforePrint(Sender: TfrxComponent); begin

with Memo33, Engine do begin

Num:=PARAM('НД'); if Num='' then Visible:=false

end end;

procedure Memo15OnBeforePrint(Sender: TfrxComponent); begin

S:=Param(-7);

if S='20000' then Who:='Землекористувач:' else Who:=Param(-5); end;

begin

end.

В секции var декларируются две переменные строкового типа с именами Num и Who.

Процедура (подпрограмма), которая вызывается в ответ на событие OnBeforePrint элемента Memo33. Этот элемент можно рассмотреть на Рис.12.13 слева над “шапкой” каталога координат.

Отметим, что элементы имеющие “привязанный” код, помечены в окне дизайнера маленьким красным треугольничком.

Извлекаем номер участка из параметра с тегом НД. Если номер отсутствует (пустая строка) то свойству Visible элемента Memo33 присваиваем False, тем самым отключая его отображение. Свойство Visible связано в элементом Memo33 конструкцией with.

Процедура (подпрограмма), которая вызывается в ответ на событие OnBeforePrint элемента

Memo150.

Извлекаем код слоя участка из фиксированного параметра -7. Если код равен 20000, то есть соответствует слою “IN4_Ділянка”, то выводим “Землекористувач”, иначе выводим имя слоя (то есть значение из параметра -5).

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

311