Во время работы Приложение Вывода Отчета (ReportOutput.app) поддерживает коллекцию ссылок на объект ReportListener. ReportOutput.app объявляет область видимости коллекции ссылок глобально с помощью команды PUBLIC. Коллекция позволяет обработчику отчетов использовать один объект, порожденный от класса ReportListener для множества команд REPORT FORM или LABEL. Для большей информации см. Как работает Приложения Вывода Отчета.

Вы можете использовать коллекцию для установки свойств экземпляра объекта ReportListener до вызова команд REPORT FORM и LABEL или для проверки результатов прогона отчета без назначения переменной для управления ссылкой явным образом.

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

NoteЗамечание

Некоторый код в этом разделе использует системную переменную _REPORTOUTPUT для вызова ReportOutput.app. _REPORTOUTPUT может содержать имя другого Приложения Вывода Отчета в вашем окружении. В этом случае замените HOME() + ReportOutput.app или подобный код для запуска  Приложения Вывода Отчета. Там где инструкция назначает имя и положение таблицы регистрации пользователя, замените на Ваше предпочтительное имя и место.

Инициализация коллекции ссылок и создание членов коллекции ссылок

Создать члена коллекции ссылок

  1. Вы можете создать члена коллекции ссылок во время прогона отчета и не используя явных переменных для ссылок. Вызвав следующую команду, где <N> - тип вывода, который вам нужен для команды REPORT FORM  Например, используйте значение 1 как <N> для предварительного просмотра отчета.

      CopyCode imageКопировать код
    REPORT FORM ? OBJECT TYPE <N>
  2. Вы можете создать члена коллекции ссылок без запуска отчета на исполнение. Вызовите следующую команду, где <N> - тип вывода, который вам нужен для команды REPORT FORM. Например, используйте значение 0 как <N> для печати отчета:

      CopyCode imageКопировать код
    DO (_REPORTOUTPUT) WITH <N>
  3. Вы можете создать члена коллекции ссылок представляя текущую таблицу регистрации  Приложения Вывода Отчета и инициализируя коллекцию в то же время.. Этот метод не создает ссылки на объект ReportListener немедленно. Инициализация коллекции данным образом и описание таблица конфигурации, как одного члена коллекции является стандартным режимом по умолчанию Приложения Вывода Отчета при вызове приложения без параметров:

      CopyCode imageКопировать код
    #DEFINE OUTPUTAPP_CONFIG_READ -200
    DO (_REPORTOUTPUT) WITH OUTPUTAPP_CONFIG_READ
    * или передать переменную по ссылке во втором 
    * параметре, как вы обычно делаете для ссылок на ReportListener,
    * получить имя текущей 
    * таблицы регимтрации:
    LOCAL lcFile
    DO (_REPORTOUTPUT) WITH OUTPUTAPP_CONFIG_READ, lcFile
    * или просто инициализировать коллекцию без параметров: 
    DO (_REPORTOUTPUT) 
    ? _oReportOutput[TRANSFORM(OUTPUTAPP_CONFIG_READ)]

Проверка членов коллекции ссылок

Получить ссылку  на объект ReportListener из коллекции ReportOutput

  1. Используйте строковое значение числовой величины, представляющей тип вывода для ссылки на ReportListener reference, как коллекции ключевых значений. В команде ниже <N> представляет тип вывода обеспечиваемый этой ссылкой на объект ReportListener.
      CopyCode imageКопировать код
    ? _oReportOutput[TRANSFORM(<N>)].Class
  2. Используйте члена коллекции ссылок после прогона отчета. Например, проверить общее количество страниц в при прогоне отчета:

      CopyCode imageКопировать код
    REPORT FORM ? OBJECT TYPE 0
    ? _oReportOutput["0"].PageTotal
  3. Используйте члена коллекции ссылок до прогона отчета для настройки его поведения. Например, предотвратить  feedback пользователя до генерации вывода XML:

      CopyCode imageКопировать код
    DO (_REPORTOUTPUT) WITH 4
    _oReportOutput["4"].QuietMode = .T.
    NoteПодсказка

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

Изменение имени переменной коллекции ссылок по умолчанию

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

Перекомпилируйте  ReportOutput.app с другим именем коллекции ссылок

  1. Раскройте подпапку  ReportOutput в папке, где хранятся zip файлы, Visual FoxPro's Tools\Xsource. Для большей информации о  Xsource см. Папка XSource.
  2. Найдите исходные файлы компонента ReportOutput. Измените ReportOutput.H (фйл заголовка).
      CopyCode imageКопировать код
    CD <your source folder>
    MODIFY COMMAND ReportOutput.H
  3. Найдите следующие две строки кода в файле заголовка:

      CopyCode imageКопировать код
    #DEFINE OUTPUTAPP_REFVAR        _oReportOutput
    #DEFINE OUTPUTAPP_REFVARCLASS  "Collection"
  4. Редактируйте значение _oReportOutput, замещая его именем переменной, которой Вы хотите использовать в качестве имени для Вашего приложения. Вы также можете изменить значение "Collection", замещая его именем класса, производным от  Collection, который будет использоваться приложением ReportOutput.app для создания экземпляра коллекции.

    NoteЗамечание

    IЕсли Вы изменили значение OUTPUTAPP_REFVARCLASS,описание класса, которое Вы назначили с помощью этой константы, должно быть в области видимости, когда Вы вызываете ReportOutput.App. Для дополнительной информации см. команду SET CLASSLIB и команду SET PROCEDURE

  5. Сохраните Ваши изменения.
  6. Перестройте  файл ReportOutput.App, при этом используйте переключатель RECOMPILE:
      CopyCode imageКопировать код
    BUILD APPLICATION ReportOutput FROM ReportOutput RECOMPILE
  7. Сохраните имя и место нахождения Вашего нового ReportOutput.app в системной переменной _REPORTOUTPUT, а также в файле  CONFIG.FPW Вашего приложения или коде setup. Для дополнительной информации см. Setting Configuration Options at Startup.

      CopyCode imageКопировать код
    _ReportOutput = <your ReportOutput.app filename and location>
  8. Распространяйте новый файл ReportOutput.App с Вашими приложениями.

Смотри также