Основы COM. Рудалев В.Г - 32 стр.

UptoLike

32
Import ActiveX. Сохраните проект, согласившись с именами файлов по умолча -
нию (вы задали их в мастере ActiveForm Wizard).
Этап 3. Построение, регистрация и импорт ActiveForm.
Теперь можно откомпилировать форму, зарегистрировать ее в Windows и, на -
конец, импортировать в Delphi. В этом отношении она ничем не отличается от
любых других элементов управления ActiveX. Для этого нужно выполните сле-
дующие действия.
Выберите в главном меню Project | Build MyFormProj. Когда проект будет от-
компилирован, выполните Run Register ActiveX Server. Выберите в главном ме-
ню Component | Import ActiveX Control. Установите форму My Test ActiveForm
Library (Version 1) в пакет DCLUSR40. Поместите ее на страницу ActiveX па -
литры компонентов или любую другую страницу по выбору . После этого новая
ActiveForm установлена в интегрированную среду Delphi.
Этап 4. Тестирование ActiveForm
Для проверки новой активной формы создайте новое приложение. Перейдите
на страницу ActiveX палитры компонентов , выберите MyFormX (Delphi при -
своила ему значок по умолчанию) и поместите его на форму. Запустите про -
грамму и протестируйте новый элемент управления. Теперь созданный файл
ОСХ можно импортировать в любую среду программирования, которая под -
держивает элементы управления ActiveX.
Упражнение. Воспользовавшись любым HTML-редактором (например, MS
FrontPage), создайте Web-страницу , расположите на ней созданную нами форму
и проверьте ее работоспособность .
2.4. Создание интерфейса событий
Часто в практическом программировании возникает потребность уведомления
клиента о каком-либо событии, происшедшем в работе сервера . Например, кли -
ент отправил COM-серверу задание загрузки файла по модемной линии. Клиент
продолжает работу , а при наступлении события завершения загрузки сервер
посылает клиенту уведомление. Сервер отвечает за генерацию событий, а их
реализацией (реагированием ) занимается клиент.
Модель событий в COM имеет определенные сходства с моделью событий в
Delphi, но и существенные отличия. Напомним, в Delphi события выполнены
как указатели на методы. Например, кнопка , расположенная на форме, является
в терминах COM сервером, который определяет и генерирует событие. Клиен-
том является приложение (форма), которая подключается к событию связыва-
нием имени метода с указателем . Недостаток модели Delphi невозможность
оповещения о событии сразу нескольких клиентов (multicasting).
Модель событий COM более сложна и основана на передаче интерфейсов [2,3].
                                            32
Import ActiveX. Сохрани тепроект, согласи в ш и сь си менами фай лов по умолча-
ни ю (в ы з ад али и х в мастереActiveForm Wizard).

Э тап 3. Построени е, реги страци яи и мпортActiveForm.
Т еперь мож но откомпи ли ров ать форму, з ареги стри ров ать ее в Windows и , на-
конец, и мпорти ров ать в Delphi. В этом отнош ени и она ни чем не отли чается от
лю бы х д руги х элементов управ лени яActiveX. Д ляэтого нуж но в ы полни тесле-
д ую щ и ед ей ств и я.
В ы бери те в глав ном меню Project | Build MyFormProj. К огд а проект буд ет от-
компи ли ров ан, в ы полни теRun Register ActiveX Server. В ы бери тев глав ном ме-
ню Component | Import ActiveX Control. У станов и те форму My Test ActiveForm
Library (Version 1) в пакет DCLUSR40. Помести те ее на страни цу ActiveX па-
ли тры компонентов и ли лю бую д ругую страни цу по в ы бору. Послеэтого нов ая
ActiveForm установ лена в и нтегри ров анную сред у Delphi.

Э тап 4. Т ести ров ани еActiveForm
Д ля пров ерки нов ой акти в ной формы соз д ай те нов ое при лож ени е. Перей д и те
на страни цу ActiveX пали тры компонентов , в ы бери те MyFormX (Delphi при -
св ои ла ему з начокпо умолчани ю ) и помести те его на форму. Запусти те про-
грамму и протести руй те нов ы й элемент управ лени я. Т еперь соз д анны й фай л
О СХ мож но и мпорти ров ать в лю бую сред у программи ров ани я, которая под -
д ерж и в аетэлементы управ лени яActiveX.
У праж не ни е . В оспольз ов ав ш и сь лю бы м HTML-ред актором (напри мер, MS
FrontPage), соз д ай теWeb-страни цу, располож и тена ней соз д анную нами форму
и пров ерьтеееработоспособность.


2.4. Создани е и нт е рф е йса собы т и й
Ч асто в практи ческом программи ров ани и в оз ни кает потребность ув ед омлени я
кли ента о каком-ли бо собы ти и , прои сш ед ш ем в работесервера. Н апри мер, кли -
ентотправ и л COM-серверу з ад ани ез агруз ки фай ла по мод емной ли ни и . К ли ент
прод олж ает работу, а при наступлени и собы ти я з ав ерш ени я з агруз ки сервер
посы лает кли енту ув ед омлени е. Серверотв ечает з а генераци ю собы ти й , а и х
реали з аци ей (реаги ров ани ем) з ани маетсякли ент.
М од ель собы ти й в COM и меет опред еленны е сход ств а с мод елью собы ти й в
Delphi, но и сущ еств енны е отли чи я. Н апомни м, в Delphi собы ти я в ы полнены
какуказ атели на метод ы . Н апри мер, кнопка, располож еннаяна форме, яв ляется
в терми нах COM сервером, которы й опред еляет и генери рует собы ти е. К ли ен-
том яв ляется при лож ени е (форма), которая под клю чается ксобы ти ю св яз ы в а-
ни ем и мени метод а с указ ателем. Н ед остатокмод ели Delphi – нев оз мож ность
опов ещ ени яо собы ти и сраз у нескольки х кли ентов (multicasting).
М од ель собы ти й COM болееслож на и основ ана на перед ачеи нтерфей сов [2,3].