Обработчики событий Назад В начало Вперед

Интерфейс-контейнер может подключиться к событиям, издаваемым встроенным интерфейсом.

Контейнер:

procedure OnData1_Changed (<параметры>);
{
...
};

Встраиваемый интерфейс должен определить передаваемые события и сделать их видимыми. Событие определяется конструкцией:

event procedure <идентификатор-события> (<параметры>);

<идентификатор-события> виден снаружи и используется для связи.

<параметры> определяют состав информации, передаваемой с событием.

Чтобы сделать <идентификатор-события> видимым снаружи, его необходимо поместить в objInterface.

После этого встраиваемый интерфейс может бросать событие из своего обработчика событий, используя утверждение:

<идентификатор-события> (<фактические-параметры>);

Интерфейс-контейнер должен определить процедуру - обработчик внешнего события и связать ее с событием с помощью процедуры BindEvent.

Также используются функции:

Пример

Интерфейс alGM обрабатывает событие PosChange интерфейса alEmb.

objInterface alEmb_Events;
  event procedure PosChange (iNRec : comp);
  event function BeforeNewRecord : boolean;
  procedure QQ;
end;
vipInterface alEmb implements alEmb_Events;
 
interface alEmb;
  create view 
	as select *
	from
  ;
  procedure QQ;
	begin
	message ('QQ');
	end;
................
  handleEvent
	cmPositionChanged : {
	PosChanged (NRec);
}
  end;
end.
 
interface alGM;
  var emb : alEmb;
  procedure EmbPosChange (iNRec : comp); // обработчик
  {
	message ('NREC = ' + string (iNRec));
  }
................
  handleEvent 
	cmInit : {
	BindEvent (EmbPosChange, Emb.PosChange);
}
	cmDone : {
	UnBindEvent (EmbPosChange, Emb.PosChange);
}
  end;
end.

Оглавление раздела

Процедура BindEvent

Процедура UnBindEvent

Процедура UnBindEvents

Процедура UnBindAllEvents