Построительно отчета (Report Builder) использует внутреннюю поисковую таблицу для сопоставления типов событий в дизайнерах отчетов и этикеток специфическим классам обработчика событий. Поскольку эта таблица встроена в приложение reportbuilder.app, она маркирована как "только для чтения" и вследствие этого не может быть модифицирована.

По-умолчанию, построитель отчета будет использовать внутреннюю таблицу, файл которой имеет имя reportbuilder.dbf и занесен в предустановки как внутренняя таблица обработчика при условии если она отвечает следующим требованиям:

У построителя отчета имеется механизм для создания внутренней копии поисковой таблицы, доступной из через диалоговый блок Options.

Если файл существует на диске, вы можете сделать изменения в таблице, либо путем просмотра в окне Browse в каталоге Visual FoxPro, либо путем использования Report Builder's Handler Registry Table Explorer.

В этой статье вы изучите как:

Смотри статью Report Builder Event Handler Registry Table для получения подробной информации по поисковой таблице.

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

Для того, чтобы скопировать внутреннюю поисковую таблицу на диск, используя диалоговый блок опций

  1. Откройте построитель отчета диалоговый блок (Report Builder) Options. Для получения подробной информации смотри статью Как: вызвать диалоговый блок Options построителя отчета.

  2. Щелкните на Create copy… для того, чтобы открыть диалоговый блок Save as.

  3. Измените имя файла и его местонахождение, если вы этого желаете и щелкните на Save для создания копии.

  4. Щелкните на Close для закрытия диалового блока Options.

По-умолчанию местонахождение для файла в диалоговом блоке Save as будет каталог, в котором расположено приложение reportbuilder.app, а в качестве имени файла по-умолчанию будет предложен reportbuilder.dbf. Это будет таблица, которую построитель отчетов будет использована в качестве предпочтительной для внутреннего использования.

Совет:
После создания и редактирования вашей поисковой таблицы событий, вы можете добавить ее в ваши приложения и дать ей другое имя. Для указания этой таблицы построителю отчетов с целью использования ее в ваших приложениях, вы вызываете приложение reportbuilder.app в специальном конфигурационном режиме в момент исполнения задач установки вашего приложения. Для получения подробной информации по этому вопросу, смотри Как: указать альтернативную таблицу событий отчета.

Для копирования внутренней поисковой таблицы на диск с использованием параметров командной строки:

  1. Откройте командное окно VFP.

  2. Напечатайте одну из следующих команд:

    • DO (HOME() + "reportbuilder.app") WITH 5, cFilename

    • * или:

    • DO (_REPORTBUILDER) WITH 5

Параметр cFilename должен содержать полный путь к файлу таблицы (.dbf). Если файл существует, он будет переписан. Если вы опустите параметр cFilename, будет вызван диалоговый блоке Save As.

Просмотр таблицы Event Handler Registry

Для исследования поисковой таблицы с использование браузера Builder's Event Handler Registry:

  1. откройте диалоговый блок Options построителя отчетов. Для получения подробной информации по этому вопросу смотри Как: вызвать диалоговый блок Options построителя отчета.

  2. Щелкните на Explore registry… для того, чтобы открыть диалоговый блок Event Handler Registry.

Для получения подробной информации по установке содержания поисковой таблицы смотри Диалоговый блок Event Handler Registry (Report Builder).

Добавление собственного класса обработчика в таблицу Event Handler Registry

В этом примере вы создадите класс, который обрабатывает событие, которое наступает при нажатия клавишного сцепления CTRL-E на элементе управления класса "label в отчете.

Ддя создания обработчика CTRL-E редактирования метки (элемент управления класса label)

  1. Создайте или отредактируйте программную библиотеку класса:

    MODIFY COMMAND c:\temp\mylibrary.prg

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

  Copy Code
DEFINE CLASS MyLabelEditor AS Custom
    PROCEDURE Execute( oEvent )
        LOCAL cCaption
        cCaption = INPUTBOX("Label caption:",;
                        "Label Properties", TRIM(frx.expr))
        IF NOT EMPTY( m.cCaption )
            REPLACE frx.expr WITH m.cCaption
            oEvent.SetHandledByBuilder(.T.)
            oEvent.SetReloadChanges(.T.)
        ENDIF
    ENDPROC
ENDDEFINE

Для регистрации вашего обработчика для события Ctrl-E построителя

  1. откройте диалоговый блок Options построителя отчетов. Для получения подробной информации по этому вопросу смотри Как: вызвать диалоговый блок Options построителя отчета.

  2. Если текстовый блок "Current registry table" содержит "Internal lookup table," выполните шаги описанные выше для копирования поисковой таблицы так, чтобы вы могли внести изменения.

  3. Щелкните на Explore registry… для открытия диалогового блока Event Handler Registry.

  4. Найдите запись с параметрами Type="H", Event=14, ObjType=5, ObjCode=0.

  5. Если такая запись не существует в таблице, добавьте в таблицу новую запись, щелкнув на Add Record.

  6. Установите значения полей так, как это показано в таблице приведенной ниже.

  7. Щелкните на Close для закрытия диалогового блока Event Handler Registry.

  8. Щелкните на Close для закрытия диалогового блока Report Builder Options.

Type

H

Class

MyLabelEditor

Library

c:\temp\mylibrary.prg

Description

Sample Ctrl-E on Label handler

Event

14

ObjType

5

ObjCode

0

Native

False

Debug

False

Для тестирования изменений вашего обработчика события

  1. Откройте раскладку отчета или этикетки в дизайнере.

  2. Выберите элемент управления "метка" (label)

  3. Нажмите CTRL-E.

    Вы должны увидеть диалоговое окно INPUTBOX(), которое вызывает ваш класс, установленный для обработки этого события.

Смотр также