Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_Написание сценариев на языке VBA.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
863.74 Кб
Скачать

Написание сценариев на языке VBA

Genesis32 поддерживает VBA. На языке VBA можно написать сценарии, которые повышают функциональность проекта. Ниже рассмотрим последовательность создания сценариев и возможностей VBA.

Вызов редактора VBA осуществляется путем выполнения команды Сервис / Макрос / Редактор VBA. Тогда на экране появляется окно редактора VBA.

Основными элементами этого окна являются окно проекта и окно ввода кода. Окно проекта содержит список форм и модулей, входящих в текущий открытый проект.

В GraphWorx32 модули и формы проекта хранятся вместе с объектами GraphWorx32 в одном и том же файле с расширением .gdf (genesis display file). Имеется возможность экспорта модулей в файл с расширением .bas, классов – в файлы .cls и форм в файл .frm. Для этого надо выделить модуль (форму, класс) и выполнить команду Файл / Экспорт.

Как видно, из окна проекта, только что открытый редактор VBA содержит модуль ThisDisplay. Модуль ThisDisplay является специальным модулем, который представляет текущую загруженную экранную форму GraphWorx32. С точки зрения ООП ThisDisplay является объектом класса экранной формы. Через этот объект можно иметь доступ ко всем объектам экранной формы и соответственно свойствам этих объектов.

Иерархия объектов экранной формы

Все графические объекты, установленные в экранную форму принадлежат некоторому классу: классу прямоугольник, эллипс, линия и т.п. В Genesis эти классы обозначаются следующим образом: GwxRectangle, GwxEllipse и т.д.

Динамические действия графических объектов также являются объектами некоторых классов. Например, изменение размера – объект класса GwxSize, изменение положения – объект класса GwxLocation и т.д.

Ниже приведем иерархию классов модуля GwxDisplay.

п.1. Доступ к графическим объектам экранной формы

Для доступа к объектам объект ThisDisplay имеет 4 метода:

ThisDisplay.GetVisibleObjectFromName(“Имя”)

ThisDisplay.GetVisibleObjectFromIndex(Long Index)

SimbolName.GetVisibleObjectFromIndex(Long Index)

SimbolName.GetVisibleObjectFromName(“Имя”)

1. Функция ThisDisplay.GetVisibleObjectFromName(“Имя”)

Возвращает ссылку на графический объект связанный с именем. Это имя определяется в окне Инспектора свойств ( поле Имя объекта)

Пример: Получим ссылку на объект с именем Rect и изменим его угол поворота

Dim obj As GwxRectangle ‘тип объекта – прямоугольник

Set obj = ThisDisplay.GetVisibleObjectFromName(“Rect”)

obj.Angle = 45

2. Функция ThisDisplay.GetVisibleObject From Index(…)

Кроме имени каждый графический объект экранной формы имеет индекс. Самый первый объект, который был размещен в рабочей области получает индекс «0», последующие объекты - индексы 1, 2, и т.д.

Функция ThisDisplay.GetVisibleObject From Index(…) возвращает объект экранной формы по индексу объекта. Эта функция удобна при последовательном выполнении операций над всеми объектами.

Пример: Получим первые 2 установленных объекта и изменим их свойство цвет.

Dim obj1 As Object

Dim obj2 As Object

Set obj1 = ThisDisplay.GetVisibleObjectFromIndex(0)

Set obj2 = ThisDisplay.GetVisibleObjectFromIndex(1)

obj1.fillcolor = RGB(0,255,0)

obj2.fillcolor = RGB(255,0,0)

3. Функция Имя_Символа.GetVisibleObjectFromIndex ( …)

Каждый символ GraphWorx32 имеет собственный список индексов всех графических объектов, из которых сгруппирован данный символ. Если получили ссылку на этот симол, то метод Имя_Символа.GetVisibleObjectFromIndex() возвращает ссылку на графический объект внутри символа по данному индексу. Данная функция удобна при последовательном выполнении операций над графическими объектами, из которых сгруппирован символ.

Пример: Изменение цвета объекта с номером 3 внутри символа с именем “sym”.

Dim sym1 As GwxSymbol ‘тип объекта – символ

Dim obj As Object

Set sym1 = ThisDisplay.GetVisibleObjectFromName(“sym”)

Set obj = sym1.GetVisibleObjectFromIndex(2)

obj.fillcolor = RGB(0,255,0)

4. Функция Имя_Символа.GetVisibleObjectFromName(“Имя”)

К графическим объектам внутри символа можно иметь доступ и по его имени объекта. Функция Имя_Символа.GetVisibleObjectFromName(“Имя”) возвращает объект внутри символа по данному имени.

п.2. Доступ к динамическим объектам экранной формы

Динамическим объектом считается назначенная к объекту динамическое действие (изменение размера, положения, вращение, указание и щелчок и т.п.). В окне инспектора свойств на соответствующей вкладке в поле «Имя объекта» указывается имя объекта - динамического действия.

VBA имеет 3 способа доступа к динамическим объектам:

1. Функция ThisDisplay.GetObjectFromName(“Имя”) возвращает ссылку на динамический объект по указанному имени объекта.

Пример: Получаем доступ к динамическому объекту “Hide” и устанавливаем значение – «0», т.е. объект связанный с этим объектом будет не видимым.

Dim obj As GwxHide ‘ тип объекта

Set obj = ThisDisplay.GetDinamicObjectFromName(“Hide”)

obj.dataSource = 0

2. Функция Имя_символа.GetDynamicObjectFromIndex(1)

Каждый графический объект может иметь несколько динамических действий. Например, прямоугольник может изменять размеры и положение. Каждому действию присваивается индекс. Самое первое динамическое действие имеет индекс 0. Использование индекса позволяет последовательно изменить параметры динамических действий.

Пример: Получаем ссылку на 2-ое динамическое действие графического объекта “Rect” и изменим его параметра - нижняя граница диапазона изменения.

Dim Rect As GwxRectangle

Dim Dyn As Object

Set Rect = ThisDisplay.GetVisibleObjectFromName(“Rect”)

Set Dyn = Rect.GetDynamicObjectFromIndex(1)

Dyn.LowRange = 10