Главная » Delphi » Оперативная активизация – ЧАСТЬ 2

0

Для того  чтобы  установить сервер в приложении COM+, выберите в контекстном меню узла Component древовидной структуры  пункты New и Component, что приведет к вызову мастера COM Component Install Wizard, который установит новый компонент с параметрами по умолчанию. При  этом для него будет выбрано имя библиотеки DLL созданного ранее сервера COM+. После  установки нового объекта в приложении от редактируйте свойства его интерфейса IQTest для поддержки очередей (рис. 18.6).

Рис. 18.13. Приложение, демонстрирующее передачу со

бытия, открыто в окне Component Services

Генерация событий

Процесс установки завершен, и теперь осталось лишь сгенерировать событие. Для этого    нужно    создать    экземпляр   класса    EventObj и   вызвать   метод    IEven- tObj.MyEvent. Проще всего  это  сделать  так,  как показано в тестовом приложении, представленном в листинге 18.5.

Листинг 18.5. TestU.pas — модуль, передающий не жестко связанное событие

unit TestU; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, Publisher_TLB, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

FEvent: IEventObj;

end;

var

Form1: TForm1;

implementation

uses ComObj, ActiveX;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin

OleCheck(CoCreateInstance(CLASS_EventObj, nil, CLSCTX_ALL,

IEventObj, FEvent));

FEvent.MyEvent(‘This is a clever string’);

end;

end.

Результат щелчка  на кнопке представлен на рис. 18.14. Обратите внимание: полу чатель  события был создан  автоматически средствами COM+,  а код обработчика со бытия — выполнен.

Рис. 18.14. Приложение, демонстрирующее передачу события, в действии

Также  можно  отметить тот  факт,  что  на передачу  события средствами COM+ за трачено несколько секунд. Это объясняется достаточно большим  количеством  загру жаемых  внутренних структур,  необходимых для передачи событий COM+. В заключе ние следует отметить, что события никогда  не передаются получателю моментально — такой процесс всегда занимает определенное время.

Более сложные вопросы

Рассмотренный в настоящем разделе материал содержит лишь базовые концепции модели событий COM+, однако  в нем не упоминалось еще о нескольких очень  важных особенностях. Не был затронут вопрос событий очередей, которые представляют со бой синтез событий COM+ и компонентов для работы с очередями. События очере дей используются при работе с компонентами, отключенными от сервера. Еще одним вопросом, достойным рассмотрения, являются фильтры событий. Фильтры событий бывают  двух типов:  фильтры генераторов и параметрические фильтры. Фильтры первого типа  позволяют генераторам управлять вызовом методов событий через их класс. Параметрические фильтры дают возможность генераторам  перехватывать со бытия в соответствии со значениями их параметров.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии