Интерактивное графическое программное обеспечение PC-DMIS (Глава 11: Создание отчетов HyperView), страница 6

8.  Переключитесь в режим выполнения (Ctrl + E).

9.  Нажмите на созданную кнопку. Открывается сообщение с текстом “Ivebeenclicked”.

Этот простой пример показывает основные принципы создания функций обработки событий.

Изменение свойств объекта по событию

Теперь попробуем изменить свойства другого объекта (например, текста в текстовом объекте) при нажатии кнопки.

1.  Перейдите обратно в режим редактирования(Ctrl + E).

2.  Убедитесь, что текстовый объект существует. Если нет, создайте новый текстовый объект.

3.  Откройте перечень свойств текстового объекта (сначала выделите его, а затем щелкните правой кнопкой мыши).

4.  Откройте вкладку Settings.

5.  Убедитесь, что поле ObjectCodeобъекта содержит идентификатор “Text1”. Идентификатор ObjectCodeобъекта отчета HyperView – это имя, которое используется для обращения к объекту из кода Basic.

6.  Щелкните на вкладке Events.

7.  Дважды щелкните на функции EventInitialize. Откроется окно VBSMini-Editor.

8.  Добавьте следующий код в поле EventInitialize: SetThis = Text1

9.  Нажмите кнопку Enter, чтобы перейти на новую строку. В следующей строке введите код: This.Text = “Thebuttonhasnotyetbeenclicked

10.  Нажмите кнопку Ok.

11.  Когда объект Text1 настроен, как описано выше, откройте перечень свойств объекта "кнопка", созданного в предыдущем упражнении.

12.  Откройте вкладку Events.

13.  Дважды щелкните на функции EventClick.

14.  Замените код, введенный в предыдущем упражнении, следующими двумя строками: Строка 1: MsgBoxIvebeenclicked, andamabouttomodifyText1’stextСтрока 2: Text1.Text = “Thebuttonwasclicked!!!”

15.  Нажмите кнопку OK, чтобы закрыть окно редактора BasicEditor.

16.  Закройте диалог Property Sheet.

17.  Перейдите в режим выполнения (Ctrl + E). Код, добавленный к функции EventInitialize объекта Text1, выведет в поле объекта Text1 текст “The button has not yet been clicked”.

18.  Теперь нажмите кнопку. Будет выведен диалог с текстом “I’ve been clicked, and am about to modify Text1’s text”. После закрытия диалога в поле объекта Text1’s появится текст “Thebuttonwasclicked!!!”.

Этот пример показывает, как свойства объекта отчета HyperView могут быть изменены с помощью Basic, используя синтаксис ObjectCode.property_name.

Доступ к методам объекта

Многие объекты отчета HyperView поддерживают различные методы в дополнение к своим свойствам. Эти методы могут быть изменены с помощью кода Basic через синтаксис ObjectCode.method_name. Можно увидеть, какие поля и методы имеются для данного объекта, введя в окне редактора Basic VBSMini-Editor идентификатор ObjectCodeс точкой на конце. Когда введена точка, открывается мини-диалог, содержащий все поля и методы объекта.

Переменные, объявленные в функции обработки событий (с помощью синтаксиса Dim var_name as var_type) действуют только внутри этой функции обработчика событий. Несомненно, имеются ситуации, когда переменные, функции или процедуры должны быть доступны из любого объекта отчета HyperView - переменные должны быть глобальными. Отчет HyperView предоставляет такие возможности.

Объявление глобальных переменных, используя свойство LocalVariables

Если требуется объявить глобальные переменные любого из стандартных типов (String, Integer, Double и т.д.), чтобы они показывались в окне Basic Wizard, для этого можно использовать свойство LocalVariables объекта TheFrame/TheView

Чтобы использовать свойство LocalVariables:

1.  Откройте перечень свойств для объекта TheFrame/TheView. Для этого выделите объект и нажмите правую кнопку мыши. Открывается диалог PropertySheet.

2.  Выберите вкладку Settings.

3.  Найдите поле LocalVariables.

4.  Дважды нажмите на поле LocalVariables, открывая диалог Local Variables.

Диалоговое окно Local Variables

Этот диалог LocalVariables позволяет добавлять, удалять и присваивать локальные переменные. Кроме того, эти переменные являются глобальными для всего отчета HyperView и доступны в любом месте данного отчета. Они также будут показаны в области LocalVariables окна ScriptWizard.