Советы по Delphi

       

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


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

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

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

typeTCalculateEvent = procedure(I: Integer) of object;

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


  • typeTSomeClass = class(TObject)privateFOnCalculate: TCalculateEvent;procedure DoCalculate(I: Integer);publicproperty OnCalculate: TCalculateEvent read FOnCalculatewrite FOnCalculate;end;

  • Метод DoCalculate совсем простой:
  • procedure TSomeClass.DoCalculate(I: Integer);beginif Assigned(FOnCalculate) then FOnCalculate(I);end;

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

    -Steve [000671]



    Содержание раздела