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

UptoLike

34
или клиента ) генерирует события для клиента . Клиент эти события обрабатыва-
ет и выводит соответствующие сообщения.
Создание сервера
На основной форме нового проекта расположите компонент Memo. Имя проек-
та Evp. Преобразуйте проект в сервер автоматизации, как это делалось ранее.
Не забудьте в окне мастера указать Generate Event Support Code
сгенерировать код поддержки событий. Укажите имя класса Evt.
В редакторе библиотеки типов в интерфейсе IEvt добавьте два метода
procedure AddText(const s: WideString);
procedure Clear;
В интерфейсе событий IEvtEvents - методы OnTextChanged и OnClear
с такими же параметрами .
Как и ранее , в модуле, содержащем описание класса , запишите реализацию ме-
тодов интерфейса :
procedure Tevt.Clear;
begin
// Fevents <> Nil означает готовность клиента к приему
// события, которое здесь генерируется вызовом
// FEvents.OnClear;
MainForm.Memo1.Lines.Clear;
if FEvents<>nil then FEvents.OnClear;
end;
procedure Tevt.AddText(const s: WideString);
begin
MainForm.Memo1.Lines.Add(s);
end;
Добавим в класс дополнительный метод , необходимый для генерации событий
от пользовательского ввода в Memo:
procedure Tevt.MemoChange(Sender:TObject);
begin
if FEvents<>Nil then FEvents.OnTextChanged((Sender as
TMemo).Text);
end;
и запишем в процедуру Tevt.Initialize
MainForm.Memo1.OnChange:=MemoChange;
Сервер готов .
Создание клиента
                                         34
и ли кли ента) генери руетсобы ти яд лякли ента. К ли ентэти собы ти яобрабаты в а-
ети в ы в од и тсоотв етств ую щ и есообщ ени я.


Со здани е се рв е ра
Н а основ ной форменов ого проекта располож и текомпонентMemo. И мяпроек-
та –Evp. Преобраз уй тепроектв серверав томати з аци и , какэто д елалось ранее.
Н е з абуд ьте в окне мастера указ ать Generate Event Support Code –
сгенери ров ать код под д ерж ки собы ти й . У каж и теи мякласса –Evt.
В ред актореби бли отеки ти пов в и нтерфей сеIEvt д обав ьтед в а метод а
procedure AddText(const s: WideString);
procedure Clear;
В и нтерфей сесобы ти й IEvtEvents - метод ы OnTextChanged и OnClear
стаки ми ж епараметрами .
К аки ранее, в мод уле, сод ерж ащ ем опи сани екласса, з апи ш и тереали з аци ю ме-
тод ов и нтерфей са:

procedure Tevt.Clear;
begin
  // Fevents <> Nil означает готовность клиента к приему
  // события, которое здесь генерируется вызовом
  // FEvents.OnClear;
  MainForm.Memo1.Lines.Clear;
  if FEvents<>nil then FEvents.OnClear;
end;

procedure Tevt.AddText(const s: WideString);
begin
   MainForm.Memo1.Lines.Add(s);
end;

Д обав и м в класс д ополни тельны й метод , необход и мы й д ля генераци и собы ти й
отпольз ов ательского в в од а в Memo:
procedure Tevt.MemoChange(Sender:TObject);
begin
    if FEvents<>Nil then FEvents.OnTextChanged((Sender as
    TMemo).Text);
end;
и з апи ш ем в процед уру Tevt.Initialize
MainForm.Memo1.OnChange:=MemoChange;
Серверготов .


Создани е к ли е нт а