Delphi и COM


         

Создание Automation- сервера (продолжение)


Если флаг Generate Event Support code включен, то Delphi автоматически добавляет в библиотеку типов сервера интерфейс IXXXEvents, где XXX — имя Automation объекта.

В этот интерфейс необходимо добавить методы, которые должен реализовать обработчик событий вашего сервера.

Создадим интерфейс обработчика событий с методом TestEvent и метод FireEvent интерфейса IAutoTest.

В сгенерированном файле с реализацией сервера добавим код для вызова обработчика события в метод FilreEvent

procedure TAutoTest.FireEvent; begin   if FEvents <> NIL then     FEvents.TestEvent; end;

Здесь FEvents  — автоматически добавленный Delphi в код сервера интерфейс IAutoTestEvents.

Компилируем и регистрируем сервер аналогично любому другому COM-серверу. Теперь его можно использовать из любого Automation-клиента, например из скрипта на Web-странице:

<HTML>  <HEAD>   <TITLE>Test Page</TITLE>  </HEAD>  <BODY LANGUAGE = VBScript ONLOAD = "Page_Initialize">   <CENTER>     <OBJECT CLASSID="clsid:344E2D50-7B91-11D4-84DD-97E4E55E3E05" ID=Ctrl1>     </OBJECT>     <INPUT TYPE = TEXT NAME = Textbox SIZE=20>   </CENTER>   <SCRIPT LANGUAGE = VBScript>    Sub Page_Initialize     Ctrl1.FireEvent    End Sub    Sub Ctrl1_TestEvent     MsgBox("Event Fired")     Textbox.Value = "Hi !"    End Sub   </SCRIPT>  </BODY> </HTML>

Здесь в качестве Clsid элемента OBJECT необходимо указать содержание константы CLASS_AutoTest из файла Project1_TLB, сгенерированного Delphi. Загрузив эту страницу в Internet Explorer, вы получите сообщение при загрузке страницы.



Содержание раздела