События event: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
(Новая: == Ссылки == *Особенности языка: продвинутый уровень *[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalAB...)
 
Нет описания правки
 
Строка 1: Строка 1:
Данный пример иллюстрирует использование событий. Они являются переменными-делегатами с некоторыми ограничениями, препятствующими их порче вне класса, где они определены. В частности, для них запрещена операция := и явный вызов вне класса, где определено событие.
<source lang="Delphi">type
  MyClass = class
    event OnMyEvent: procedure;
    procedure SimulateEvent;
    begin
      if OnMyEvent<>nil then
        OnMyEvent;
    end;
  end;
procedure MyHandler;
begin
  writeln('Произошло событие')
end; 
 
var a: MyClass; 
begin
  a := new MyClass;
  a.OnMyEvent += MyHandler;
  a.SimulateEvent;
end.</source>
== Ссылки ==
== Ссылки ==
*[[Особенности языка: продвинутый уровень]]
*[[Особенности языка: продвинутый уровень]]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]

Текущая версия от 13:08, 16 января 2010

Данный пример иллюстрирует использование событий. Они являются переменными-делегатами с некоторыми ограничениями, препятствующими их порче вне класса, где они определены. В частности, для них запрещена операция := и явный вызов вне класса, где определено событие.

type 
  MyClass = class
    event OnMyEvent: procedure;
    procedure SimulateEvent;
    begin
      if OnMyEvent<>nil then 
        OnMyEvent;
    end;
  end;

procedure MyHandler;
begin
  writeln('Произошло событие')
end;  
  
var a: MyClass;  

begin
  a := new MyClass;
  a.OnMyEvent += MyHandler;
  a.SimulateEvent;
end.

Ссылки