Необходимо не только создать форму и на ней кнопку, но жизненно важно определить действия, которые будут происходить при нажатии на эту кнопку.
В 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-го уровня) позволяют увидеть доступные события: