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

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

Расширения в среде разработки (Design-time enhancements).

Многочисленные возможности и произведенные изменения делают разработку отчетов в Visual FoxPro более удобной, как для вас, так и для конечных пользователей. Приложение "построитель отчетов"- Report Builder призвано вывести вас за привычные рамки ваших навыков разработки отчетов. Диалоговые блоки построителя отчетов и события дизайнера отчета полностью раскрыты для вас, с тем чтобы вы смогли подогнать "под себя" процесс разработки. (Уже появилось выражение - улучшение Visual FoxPro c помощью его самого. - прим. переводчика )
Множественные области детализации данных - detail bands.

Вы можете более гибко обрабабывать множество дочерних таблиц и взаимосвязей данных в исправленном дизайнере отчетов. Когда вы исполняете отчет с множеством областей вывода данных, вы можете связывать новые области (detail bands) c ассоциированными заголовками и подножиями этого блока данных, не только для, уместного в таком случае,  представления этих взаимосвязей данных, но и для более понятных, объяснимых вычислений.
Объектно-ассистированная технология отчетов в run-time.

Полностью перестроенная система вывода отчетов, включаящая новые базовые классы, меняет путь, предоставляемый Visual FoxProдля вывода файлов отчетов и этикеток в run time. Объектно-ассистированная технология предоставляет вывод лучшего качества, предоставляет новые виды вывода и открытую архитектуру, основанную на новом базовом классе Visual FoxPro, именуемом ReportListener. Программируемый интерфейс предпросмотра отчетов (Report Preview) взаимодействует с объектами ReportListener, предоставляя вам полный контроль над предпросмотром отчета. Приложение Report Preview предоставляет улучшеннную "out-of-the-box" гибкость при предварительном просмотре.
Улучшения в печати, исполнении и обработке кодировок (character-set).

Visual FoxPro 9 позволяет лучшим образом образом использовать способности печати операционной системы и подсистемы рендеринга GDI+. Кроме того, он значительно лучше, чем в ранних версиях обслуживает многочисленные локали (locales) и символьные наборы (character sets). Эти изменения продемонстированы в Report System, и являются доступными для использования в пользовательских кодах во время разработки отчета и его исполнении в run-time.
Открытое использование файлов определений отчетов и этикеток (таблиц .frx и .lbx).

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

Расширения для Design-time

Многочисленные изменения в системе подготовки и исполнения отчетов помогут вам дополнить Numerous changes in the Report System help you enhance the design-time experience for developers and end-users. Эта секция направит вас к информации об улучшениях для design-time.

Перехватчки событий дизайнера отчета (Report Designer Event Hooks) и приложение построителя отчета (Report Builder Application)

Report Designer, предлагает вам сейчас перехватчики событий Report Builder Hooks, которые позволят вам перехватывать события, происходящие во время сессий подготовки отчета или этикетки и расширить действия, которые вы можете осуществлять с его помощью. Используемое по умолчанию приложение Report Builder замещает множество стандартных диалоговых блоков, своими  собственными новыми блоками, которые написаны в кодах Visual FoxPro. Компоненты приложения построителя отчета (Report Builder) представлены вам как фундаментальные классы Visual FoxPro Foundation.

Для изучения: Прочитайте:

Перехватчики событий построителя отчета (Report Builder Hooks)

Понимание событий построителя отчета

Как приложение построителя отчета использует перехватчики событий

Как: сконфигурировать обработку событий построителя отчета

Как указать и распространять построитель отчета совместно с вашими приложениями

Системная переменная _REPORTBUILDER

Как: указать и распространять приложение ReportBuilder.App

Включение файлов отчета в дистрибутив

Использование алгоритмов построителя отчета в вашем коде

Фундаментальный класс FRX Cursor

Фундаментальный класс FRX Device Helper

Защита для сессий разработки конечного пользователя и возможности настройки

Вы можете позволить конечному пользователю модифицировать и создавать отчеты и этикетки с установкой ограничений на то, что они могут делать в интерфейсе дизайнера отчета с помощью нового ключевого слова PROTECTED. Защита может устанавливаться для индивидуальных объектов и для отчета в целом. Мы можете изменить вид того, что видит конечный пользователь в интерфейсе дизайнера раскладки, от сложных выражений до простых меток и образцов данных, во время работы в защищенном - PROTECTED - режиме разработки используя Design-Time Captions. Вы можете предоставить пользователю полезные инструкции, как для защищиенного, так и для стандратного режима разработки, используя Tooltips для элементов отчета.

Для изучения: Прочитайте:

Использование ключевого слова PROTECTED

Команда MODIFY REPORT

Команда MODIFY LABEL

Установка защиты для дизайнеров отчета и этикетки и что эта защита может делать

Установка защиты для отчетов

Установку защиты предлагают диалоговые окна Report или Label Dialog, во время использования приложения построителя отчета

Закладка Protection диалогового блока Report Control Properties (Report Builder)

Закладка Protection диалогового блока Report Properties (Report Builder)

Закладка Protection диалогового блока Report Band Properties (Report Builder)

Design-Time Captions

Как: добавить заголовки Design-time к элементам полей

ToolTips для элементов отчета

Как: добавить Tooltips элементам отчета

Расширенное использование Data Environment в отчетах

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

Для изучения: Прочитайте

Сохранение Data Environment отчета

Как: сохранить Data Environment отчета как класс

Загрузка Data Environment отчета

Закладка Data Environment диалогового блока Report Properties (приложение Report Builder)

Как: загрузить Data Environments для отчетов

Мощные улучшения в разработчике

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

Для изучения Прочитайте

Улучшения в Interactive Development Environment (IDE) отчета и этикетки, такие как:

  • Расширенная панель инструментов Report Designer'а и более легкий доступ к нему из меню View

  • Новое контекстное меню глобальных свойств отчета

  • Улучшения и дополнения  к существующим контекстным меню

  • Пересмотренное и расширенное меню Report

Раскладка меню и разработка

Изменения в глобальных опциях разработки отчета и этикетки

Закладка Reports диалогового блока Options

Использование нового свойства PictureVal элемента раскладки Image для указания картинок в отчетах

Как: добавить картинки в отчеты

Свойство PictureVal

Новые символы шаблона картинки (U и W) и обновленные инструкции форматирования (Z, теперь поддерживают данные для date и datetime), полезно в отчетах и этикетках

Выражения форматирования для Field Controls

Свойство InputMask

Свойство Format

Получение улучшенного вывода в формате HTML, котороое способствует улучшениям в производстве отчетов в run-time, когда вы выбираете Save As HTML… во время разработки отчета или этикетки

Как: генерировать вывод для отчетов

Совет:
Прочие компоненты Visual FoxPro, которые вызывают Genhtml.prg, встроенное по умолчанию в _GENHTML, автоматически используют совместно улучшенный вывод в формате HTML, хотя сами эти компоненты остались неизменными. Это включает в себя Фундаментальный класс FRX to HTML и Фундаментальный класс Output Object.

Множественные полоски/области детализации (Detail Bands)

The Report Engine can now move through a scope of records multiple times. Записи могут представлять собой связанный набор линий детализации в дочерних таблицах, или они могут множество раз проходить через одну и ту же таблицу. Эти множественные проходы через границы записей представлены как множественные полоски/области детализации (multiple detail bands).

Полоски/области детализации (Detail bands) могут иметь свои собственные заголовки и подножия, свой собственный код, связанный с onEntry и onExit и свои собственные связанные переменные отчета. Каждый detail band может быть явно связан с отдельныс целевым псевдоименем (target alias), позволяя вас управлять числом входов на каждом detail band отдельно для связанных таблиц.

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

Для изучения Прочитайте

Разработка отчетов и этикеток с множественными detail bands и связанных с ними заголовков и подножий

Диалоговый блок Optional Bands

Диалоговый блок Report Band Properties

Диалоговый блок Band Tab, Report Band Properties (Report Builder)

Обработка множественных, связанных таблиц в данных отчета и этикетки

Управление данными в отчетах

Работа со связанными таблицами с использованием Multiple Detail Bands в отчетах

Связывание переменных отчета с полосками/областями детализации данных

Как: сбросить переменные отчета

Сравнение множественных групп и множественных полосок/областей детализации данных

Полоски/области отчета

Обработка объектно-ассистированного отчета в Run-time

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

  • генерации множественных типов вывода во время выпуска отчета;
  • объединения множественных отчетов в один, как части одного конечного вывода;
  • улучшения качества традиционного вывода отчета;
  • динамической установки содержания отчета во время его обработки;
  • предоставления новых типов вывода, недоступных в ранних версиях Visual FoxPro.

Этот раздел покрывает массив расширений для run-time, которые работают совместно для поддержки режима объектно-ассистированного производства отчета.

Объектно-ассистированная архитектура и базовый класс ReportListener

Новый базовый класс ReportListener и поддерживающие его расширения языка являются сердцем расширений отчетов в run-time.

Для изучения Прочитайте

Основы архитектуры, как ее компоненты совместно работают и что происходит при запуске объектно-ассистированного отчета

Понимание объектно-ассистированной системы отчетов Visual FoxPro

Базовый класс ReportListener и его методы

Объект ReportListener

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

Автоматический вызов режима объектно-ассистированной технологии отчета

Команда SET REPORTBEHAVIOR

Системная перемнная _REPORTOUTPUT

Закладка "Reports" диалогового блока "Options"

Явный вызов режима объектно-ассистированной технологии отчета с помощью команд Visual FoxPro

Команда REPORT FORM

Команда LABEL

Отладка и обработка ошибок исполняемого объектно-ассистированного отчета

Обработка ошибок во время исполнения отчета

Report Preview API и приложение Report Preview

Объектно-ассистированный режим исполнения отчета в Visual FoxPro 9 дает вам полный контроль над предпросмотром очтета и этикетки.

Для изучения Прочитайте

Как работает объектно-ассистированный предпросмотр

API контейнера Preview

Создание пользовательского контейнера предпросмотра

Используемое по умолчанию приложение Report Preview

Улучшение контейнера предпросмотра, используемого по умолчанию

Как указать и распространять компоненты предпросмотра отчета совместно с вашими приложениями

Системная переменная _REPORTPREVIEW

Как: указать и распространять приложение ReportPreview.App

Включение файлов отчета в дистрибутив

New Types of Output and the Report Output Component Set

Поскольку вы можете субклассировать ReportListener, вы можете создавать новые типы выводов отчета. В поставке Visual FoxPro 9 имеется приложение Report Output Application для связи субклассов ReportListener c типами выводов, субклассов и типами выводов, subclasses with output types, также и классов, производных от ReportListener с расширенными возсожностями вывода.

Для изучения Читайте

Требования для Report Output Application и как Visual FoxPro использует Report Output Applications

Системная переменная _REPORTOUTPUT

Используемые по умолчанию возможности Report Output Application.

Понимание Report Output Application

Определяет пользовательские обработчики вывода, с помощью Report Output Application, используемого по умолчанию

Как: указать альтернативную таблицу Report Output Registry Table

Как: зарегитрировать пользовательские ReportListeners и пользовательские OutputTypes в таблице Report Output Registry Table

Рассмотрение создания новых типов вывода отчета

Понимание и конфигурирование фундаментальных классов Visual FoxPro, предоставляющих поведение по умолчанию ReportListener для объектно-ассистированного предпросмотра и печати

Фундаментальный класс ReportListener User Feedback

Понимание и конфигурирование фундаментальных классов Visual FoxPro, ответственных за выводы XML и HTML

Фундаментальный класс ReportListener XML

Фундаментальный класс ReportListener HTML

Усиление полного набора поддерживаемых фундаментальных классов Report Output и формата VFP Report Output XML

Фундаментальные классы ReportListener

Использование VFP Report Output XML

Как указать и распространять компоненты Report Output с приложениями

Как: указать и распространять компоненты Report Output Application

Включение фалов отчета для распространения

Стратегии миграции и изменения в исполнении вывода

Вы можете использовать изменения, произведенные в design-time для улучшения всех отчетов и этикеток, когда вы выбираете режим совместимости с предыдущими версиями или режим объектно-асистированного производства отчета в run time.

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

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

  • Вы можете переключить приложение на полное использование режима объектно-ассистированного вывода отчета с помощью команды SET REPORTBEHAVIOR 90.
  • Вы можете использовать команду SET REPORTBEHAVIOR 90 на предварить конкретную команду REPORT FORM для отчета с форматирование командой SET REPORTBEHAVIOR 80.
  • Вы можете все время использовать объектно-ассистированный режим, но настроить поведение ваших производных от ReportListener классов для соответствия конкретных требований. Например, вы можете изменить установку по умолчанию свойстав ReportListener'а DynamicLineHeight в False (.F.).
  • Вы можете оставить SET REPORTBEHAVIOR в его дефолтной установке в 80, и добавить конкретную опцию OBJECT конкретному отчету на ваше усмотрение, поскольку у вас есть возможность оценить и установить индивидуальные раскладки отчета и этикетки.

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

Общие изменения в использовании Visual FoxPro печати под Windows, графическом выводе и обработки шрифтов поддерживают улучшения в системе вывода отчетов. Эти изменения расширяют ваши возможности в поддержке множества принтеров и множества языков в отчетах.

Для изучения Читайте

Возможно GDI+ и воздействие на природный вывод в Visual FoxPro

Использование GDI+ в отчетах

Расширения в производстве отчетов в Visual FoxPro, которые позволяют вашему программному коду использовать GDI+ в режиме объектно-ассистированного отчета, а также фундаментальные классы Visual FoxPro помогут вам начать их использование

Свойство GDIPlusGraphics

Метод Render

Фундаментальные классы GDI Plus API Wrapper

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

Функция GETFONT()

Диалоговый блок Style Tab, Report Control Properties (Report Builder)

Как: Изменить установки страницы для отчетов

Диалоговый блок Reports Tab, Options

Возможности производства отчетов для международных приложений

Измения в диалоговых блоках Visual FoxPro, удучшения в вашем программном доступе к ним, и предоставление перезаписи установок в Printer Environment в файлах отчета и этикеток

Диалоговый блок SYS(1037)- Page Setup

Получение улучшенной информации о установленных принтерах пользователя

Функция APRINTERS()

Ограничение списка шрифтов, которые подходят для принтера пользователя

Функция GETFONT()

Расширенное использование файлов определения отчета и этикетки

При всех этих изменениях в системе отчетов Visual FoxPro Report System, Report Designer и Report Engine обрабатывают ваши определения отчета и этикетки используя те же структуры файлов  .frx и .lbx , которые были и в предыдущх версиях. Они изменяют путь использования их определенных полей, без превращения этих отчетов и этикеток в недействительные для ранних версий, и, кроме того, они позволяют вам расширить использование вами существующих полей или добавлять собственные поля в этих файлах.

Совет:
Эти изменения являются критическими для ваших возможностей созлавать расширения новых возможностей системы отчетов. Например, вы можете хранить два набора  ToolTips в двух полях расширения отчета, один набор для использования разработчиком и один набор для конечного пользователя. В расширении Report Builder вы можете оценить работал-ли  Designer в защищенном или стандартном режиме, и заменить существующий набор  ToolTips из соответствующего поля расширения. В предыдущих версиях, вы не могли добавлятьполя в структуру отчета или этикетки; Designer и Engine посчитали ли бы такую таблицу поврежденной или недействительной. Вы, кроме того, не могли безопасно добавить ваше собственное содержание в неиспользуемые, стандартные в различных записях файлов определения отчета или этикетки, так как Report Designer просто удалял такое содержание.

Visual FoxPro 9 предоставляет пересмотренную таблицы FILESPEC для файлов отчета и этикетки, с расширенной инфорамции об испольщовании каждой колонки в ранних версиях наряду с текущими расширениями.

Visual FoxPro 9, кроме всего прочего, устанавливает новый, структурированный формат метаданных для своместного использования с отчетами. Этот формат представляет собой схему XML документа, совместно используемую с XML MemberData дизайнера классов.

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

Для изучения Читайте

Каким образом Visual FoxPro использует таблицы .frx и .lbx и как расширить эти структуры

Понимание и расширение структуры отчета

Как найти и отобразить содержание пересмотренной таблицы FILESPEC, 60FRX.dbf

Таблица структур табличных файлов (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx)

Каким образом вы можете редактировать XML данные с использованием приложения построителя отчета

Как: присвоить структурированные Metadata для элементов отчета Report

Каким образом вы можете использовать Report XML MemberData

Расширения Report XML MemberData

Схема документа для совместного использования MemberData

Расширяемость MemberData

Смотрите также