Вернемся обратно в Graphics Builder с отрытой страницей Test. Откроем диалоговое окно свойств элемента управления ActiveX MyFirstActiveX.SampleUI, и свяжем каждое свойство с соответствующим тегом, как показано ниже в таблице (для примера, на рис. 13 показано связывание свойства FloatProperty с соответствующим тегом CitectFloat):
Название свойства | Имя тега | Обновление тега по событию |
FloatProperty | CitectFloat | OnValueChanged |
IntProperty | CitectInt | OnValueChanged |
StringProperty | CitectString | OnValueChanged |
Рис. 13. Связывание свойства FloatProperty элемента управления с соответствующим тегом CitectFloat Vijeo Citect
Теперь, когда будет происходить событие OnValueChanged, Vijeo Citect будет получать значение соответствующего свойства элемент управления ActiveX и обновлять соответствующий тег Vijeo Citect, привязанный к этому свойству.
Программный доступ к элементу управления ActiveX
с помощью Cicode
Используя Cicode можно получить доступ к свойствам и методам элемента управления ActiveX. В этой части статьи мы продемонстрируем как с помощью Cicode выполнять следующие действия:
- Вызывать методы (Выполнять методы предоставляемые элементом управления ActiveX)
- Устанавливать свойства (Записывать значения в свойства элемента управления ActiveX)
- Получать свойства (Читать значения свойств элемента управления ActiveX)
- Подписываться на события (Выполнять функции Cicode, когда возникают события в ActiveX)
Перед началом использования Cicode, необходимо понять, как обратиться или по-другому как получить ссылку на конкретный элемент управления ActiveX находящийся на графической странице Vijeo Citect из Cicode. Для этого у каждого элемента управления существует два свойства:
- Object Name (Имя объекта)
- Event Class (Класс события)
Рис. 14. Идентификация элемента управления на графической странице Vijeo Citect
- Object Name: используется в Cicode для получения ссылки на элемент управления ActiveX. Получив ссылку, можно использовать ее для записи и чтения значений свойств, а также вызова методов предоставляемых элементом управления.
- Event Class: используется в Cicode для подписки на события предоставляемые элементом управления ActiveX.
Теперь создадим новый файл для функций Cicode с помощью Citect Explorer как показано на рис. 15.
Рис. 15. Создания файла для функций Cicode с помощью Citect Explorer
Вызов метода предоставляемого элементом управления ActiveX
Элемент управления ActiveX, созданный в этой статье, предоставляет 2 метода (см. определение интерфейса IMyFirstActiveX):
- SampleMethod ()
- SampleMethodWithArgs (string arg)
Чтобы вызывать эти методы, мы можем определить функции на Cicode, как показано ниже:
OBJECT hObject = ObjectByName("AN503");
_ObjectCallMethod(hObject, "SampleMethod");
END
и
OBJECT hObject = ObjectByName("AN503");
_ObjectCallMethod(hObject, "SampleMethodWithArgs", arg);
END
Функция ObjectByName () используется в нашем Cicode, чтобы помочь нам получить ссылку на элемент управления ActiveX. Эта ссылка используется _ObjectCallMethod () для вызова/выполнения предоставляемых элементом управления ActiveX методов.
Вторая функция CallActiveXMethodWithArg(), показывает как функция _ObjectCallMethod () позволяет передать более чем 2 аргумента, дополнительные аргументы используются для передачи их методу элемента управления ActiveX, который будет вызван.
Примечание: Для более детальной информации смотрите встроенную или веб-помощь по Сicode функциям.?
Запись и чтение значений свойств, предоставляемых элементом управления ActiveX
Запись
Элемент управления ActiveX предоставляет 3 свойства:
- FloatProperty
- IntProperty
- StringProperty
Эти свойства поддерживают методы доступа как GET, так и SET. Это означает, что мы может и читать и писать в эти свойства.
Чтобы сильно не усложнять код, мы можем определить одну функцию на Cicode, которая позволит нам писать в любое из этих свойств. Ниже приведен ее код.
OBJECT hObject = ObjectByName("AN503");
_ObjectSetProperty(hObject, propertyname, propertyvalue);
END
Функция _ObjectSetProperty() позволяет нам писать в свойство требуемое значение. Первый аргумент определяет контекст элемента управления ActiveX. Второй аргумент используется для определения имени свойства, в которое необходимо писать значение, а третий аргумент указывает какое значение необходимо писать. Второй и третий аргументы имеют строковый тип.
Чтение
Чтение значения свойства предоставляемого элементом управления ActiveX очень похоже на запись. Главное отличие в том, что функция возвращает значение и в коде, для чтения свойства, используется функция _ObjectGetProperty(). Код функции чтения свойства приведен ниже.
STRING strValue;
OBJECT hObject = ObjectByName("AN503");
strValue = _ObjectGetProperty(hObject, propertyname);
RETURN strValue;
END
_ObjectGetProperty() – возвращает значение свойства как строку, которая, в свою очередь, возвращается нашей функцией GetActiveXProperty().