Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

Делегирование события

...я вижу что событие делегировано, но почему вы считаете, что это отход от ООП? Тем не менее, Delphi это использует при каждом определении обработчика события.

Вот как поступить в вашей ситуации:

  1. Определите тип процедуры, использующейся в качестве обработчика события. Допустим, ваш обработчик OnCalculate имеет один параметр типа Integer (присутствующий лишь для демонстрации идеи).


       
    type
    TCalculateEvent = procedure(I: Integer) of object;

  2. Теперь объявите ваш класс:


       
    type
    TSomeClass = class(TObject)
    private
    FOnCalculate: TCalculateEvent;
    procedure DoCalculate(I: Integer);
    public
    property OnCalculate: TCalculateEvent read FOnCalculate
    write FOnCalculate;
    end;

  3. Метод DoCalculate совсем простой:


       
    procedure TSomeClass.DoCalculate(I: Integer);
    begin
    if Assigned(FOnCalculate) then FOnCalculate(I);
    end;

Теперь вы можете присваивать значение объекту TSomeClass, и назначать любую процедуру событию OnCalculate (естественно, при условии, что ее объявление соответствует объявлению TCalculateEvent).

-Steve [000671]