Советы по Delphi




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


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

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

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

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

  • Теперь объявите ваш класс:
  •     type TSomeClass = class(TObject) private FOnCalculate: TCalculateEvent; procedure DoCalculate(I: Integer); public property OnCalculate: TCalculateEvent read FOnCalculate write FOnCalculate; end;

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

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

    -Steve [000671]




    Содержание    Вперед