Обработка событий

В отличие от различных других COM-серверов в WSO задание обработчиков различных событий является одной из важнейших задач.

Необходимо не только создать форму и на ней кнопку, но жизненно важно определить действия, которые будут происходить при нажатии на эту кнопку.

В WSO существует развитая система задания обработчиков различных событий, предусматривающая три уровня:

Базовый уровень - (стандартный для COM) связан с реализацией интерфейса IConnectionPointContainer. Идея метода заключается в том, что клиентская сторона должна создавать COM-объект с определенным интерфейсом (он называется event sink) и передавать его определенным стандартизованным образом серверному объекту. Когда возникают события, сервер вызывает методы переданного ему объекта. Естественно в сценарных языках создание подобного объекта происходит незаметно для программиста, и ему, как правило, требуется реализовать не сам sink, а одну или несколько процедур. Задание обработчиков через этот уровень может осуществляться в Perl или через WSH.

Уровень непосредственного определения позволяет задавать обработчики путем присваивания указателей на функции к свойствам объектов WSO. Указатель на функцию должен иметь тип, определенный в стандарте ECMA 262 (ECMAScript Edition 3) (этот стандарт поддерживает JavaScript, Microsoft® JScript® поддерживает этот стандарт, начиная с версии 5.5). Также поддерживаются функции языков JScript (в том числе и в версиях до 5.5) и VBScript.

Уровень списков обработчиков позволяет добавлять любое количество указателей на функции к списку обработчиков, через него можно определить вызов при некотором событии нескольких обработчиков. Добавление/удаление из списка осуществляется методами AddEventHandler и RemoveEventHandler, каждый из которых имеет параметры: строковый параметр, определяющий событие, например “OnClick” и обработчик.

Как правило, обработчик события на языке представляет собой функцию или процедуру с различными параметрами. Все обработчики получают параметр Sender - объект, который вызывает обработчик, и могут также получать дополнительные параметры, зависящие от конкретного события. Обработчик может возвращать вызывающему объекту некоторый результат, например обработчик события OnCloseQuery у формы. Основные события определены у класса Control; форма имеет дополнительные события, могут иметь их и некоторые другие объекты.

Основные типы обработчиков:

Интерфейсы обработчиков событий (для 1-го уровня) позволяют увидеть доступные события:


Документация по WSO 1.1. Последние изменения:Wed Aug 12 18:10:22 2015. (C) Веретенников А. Б. 2004-2015