По умолчанию приложение вывода отчета поддерживает таблицу регистрации, в которой можно определить классы, порожденные от класса ReportListener, для различных типов выводных результатов:
- Создать новую таблицу регистрации.
- Определить приложению вывода отчета как использовать эту таблицу во время исполнения.
- Выяснить, какую таблицу регистрации приложение вывода отчета использует в текущий момент.
![]() | |
---|---|
|
Для большей информации об использовании таблицы регистрации с вашими классами и расширениями возможности вывода, смотри Как: зарегистрировать пользовательские классы ReportListener и Пользовательские типы вывода в таблице регистрации Приложения Вывода Отчета.
Для большей информации о формате таблицы регистрации, смотри Как работает Приложения Вывода Отчета.
Создание таблицы регистрации вывода отчетов
![]() | |
---|---|
|
Создание новой таблицы регистрации вывода отчетов с помощью ReportOutput.app
-
В командном окне или в программе(.prg), используйте следующий код:
Копировать код
* #DEFINE OUTPUTAPP_CONFIG_WRITE -100 DO (_REPORTOUTPUT) WITH -100
- ReportOutput.Аpp создает таблицу с именем OutputConfig.DBF, и соответствующее Мемо (.fpt) и структурные индексные файлы (.cdx), в том же самом месте, где находится ReportOutput.App (обычно, каталог Visual FoxPro или HOME() ).
- ReportOutput.App отображает BROWSE этой новой таблицы, так что можно проверить ее содержимое. Содержимое будет включать записи, требуемые для ReportListener XML Foundation Class, плюс некоторые удаленные записи, служащие образцами различных типов записей регистрации.
- Вы можете увидеть удаленную запись для debugListener, ReportListener Debug Foundation Class. Эта запись показывает, как выглядит запись регистрации ReportListener в соответствии с требованиями ReportOutput.App.
- Вы также можете увидеть среди удаленных записей две записи ObjType со значением 1000. Это значение находится в диапазоне, зарезервированным для использования utilityReportListener, утилитой ReportListener и File-handling Foundation Class. Одна запись показывает как создать запись конфигурации для установки свойства класса и другая - как создать запись конфигурации для вызова метода. Для большей информации о том, как этот класс и его производные используют записи конфигурации, смотри ReportListener Utility и File-handling Foundation Class.
- Вы можете переименовать три файла OutputConfig.* и разместить их где-то еще на вашем диске для последующего использования.
Создание новой таблицы регистрации вывода отчетов с помощью ReportListener Foundation class
-
Создайте экземпляр ReportListener Utility и File-handling Foundation Class, или от какого либо производного от ReportListener Foundation Class. Вы можете создать экземпляр этого класса используя библиотеку классов (vcx), встроенную в ReportOutput.app, или вы можете создать экземпляр класса, используя копию библиотеки классов, находящуюся в папке Visual FoxPro's FFC.
Копировать код
* "взять" копию прямо из ReportOutput.App: #DEFINE CONFIG_REPORTLISTENER_CLASS "utilityReportListener" oRL = NEWOBJECT(CONFIG_REPORTLISTENER_CLASS, ; "listener.vcx", ; _REPORTOUTPUT) * - ИЛИ - * прямой доступ к библиотеки Foundation Class: #DEFINE FFC_HOME HOME()+"FFC\" oRL = NEWOBJECT(CONFIG_REPORTLISTENER_CLASS, ; FFC_HOME + "_reportListener.vcx")
Подсказка
Все фундаментальные классы ReportListener обеспечивают файл-ориентированный вывод, такие как ReportListener HTML Foundation Class, производные от ReportListener Utility and File-handling Foundation Class. Некоторые из этих классов нуждаются в таблице регистрации. Класс, который нуждается в таблице, проверяет наличие таблицы в момент его инициализации. Если таблица отсутствует, он создает ее копию в момент выполнения процедур инициализации и располагает в месте по умолчанию. Для большей информации, смотри ReportListener Utility и File-handling Foundation Class. - Запрашивайте (Request) новую таблицу конфигурации из экземпляра ReportListener. Вы можете определить ее имя и расположение:
Копировать код
* если SAFETY уствновлен в ON, пытаемся переписать, если файл существует: oRL.createConfigTable("c:\temp\myconfig.dbf") *- ИЛИ - * используем второй параметр для прямой перезаписи: oRL.createConfigTable("c:\temp\myconfig.dbf", .T.)
Подсказка
Классы соблюдают установку SAFETY в вашем окружении, в том, что они предложат подтвердить переписать таблицу, если SET SAFETY установлено в ON и если вы не укажите второй параметр в методе createConfigTable как True ( .T.
). Для большей информации, смотри SET SAFETY Command. Если вы отклоняете предложение переписать таблицу при подсказке, классы предпринимают некоторые действия; они проверяют таблицу на наличие требуемых индексов и добавляют в таблицу необходимые для них записи.
Назначение вашей собственной таблицы регистрации для приложения вывода отчетов
В последнем разделе вы видели, что чтобы создать таблицу регистрации, вы можете вызывать ReportOutput.app, используя отрицательный номер (-100
) в качестве первого параметра, передаваемого программе. ReportOutput.app интерпретирует отрицательные значения в этом параметре как специальные рутинные инструкции по поддержанию, нежели чем инструкции по своим нормальным задачам по снабжению ReportListener ссылками.
ReportOutput.app резервирует второе значение, -200
, для того чтобы иметь возможность назначать название и расположение вашей собственной таблицы регистрации, как показано ниже.
Назначить вашу пользовательскую таблицу регистрации для использования приложением ReportOutput.app
-
Выполните следующую строку с кодом, замещая имя и путь вашей пользовательской таблицы регистрации:
Копировать код
* #DEFINE OUTPUTAPP_CONFIG_READ -200 DO (_REPORTOUTPUT) WITH -200,"c:\temp\myconfig.dbf"
Проверка текущей таблицы регистрации Приложения Вывода Отчетов
Во время исполнения, ReportOutput.app поддерживает коллекцию ссылок ReportListener. Для большей информации, смотри Как: использовать коллекцию ссылок Приложения Вывода Отчета. ReportOutput.app использует специальный член этой коллекции, который содержит имя своей таблицы регистрации. Вы можете использовать коллекцию ссылок для того, чтобы определить какая таблица регистрации используется в настоящий момент приложением ReportOutput.app. Вы также можете проверить название текущей таблицы регистрации, вызывая напрямую Приложение вывода отчета (Report Output Application).
Проверить имя текущей таблицы регистрации приложения ReportOutputю.App, используя коллекцию ссылок
-
Если вы выполнили команду CLEAR ALL или освободили (RELEASE) глобальную переменную ссылки на коллекцию после последнего успешного вызова ReportOutput.app или если вы еще не вызывали его в текущей сессии Visual FoxPro, коллекция может еще не существовать. Убедитесь, что коллекция существует и, затем, проверьте значение соответствующего члена коллекции.
Копировать код
#DEFINE OUTPUTAPP_CONFIG_READ -200 IF VARTYPE(_oReportOutput) = "O" lcFile = _oReportOutput[TRANSFORM(OUTPUTAPP_CONFIG_READ)] ENDIF
- Проверьте результат, что вы получили в переменную lcFile. Если он является именем файла с полным путем, ReportOutput.app использует таблицу регистрации на диске. Если lcfile не включает путь, ReportOutput.app использует таблицу регистрации, встроенную в приложение (.app или .exe).
Проверить имя текущей таблицы регистрации приложения ReportOutput.App, вызывая ReportOutput.App
-
Инициализировать переменную, которая содержит название таблицы регистрации
Копировать код
LOCAL lcFile
-
Вызвать ReportOutput.app со специальным значением конфигурации, который вы использовали раннее, употребляя инициализированную раннее переменную в качестве второго параметра. Это подобно тому, как вы вызываете ReportOutput.app для получения ссылки для ReportListener:
Копировать код
#DEFINE OUTPUTAPP_CONFIG_READ -200 DO (_REPORTOUTPUT) WITH OUTPUTAPP_CONFIG_READ, lcFile
- Проверьте результат, что вы получили в переменную lcFile. Если он является именем файла с полным путем, ReportOutput.app использует таблицу регистрации на диске. Если lcfile не включает путь, ReportOutput.app использует таблицу регистрации, встроенную в приложение (.app или .exe).
Замечание
Коллекция ссылок создается автоматически когда вы используете данный синтаксис.