...я вижу что событие делегировано, но почему вы считаете, что это отход от ООП? Тем не менее, Delphi это использует при каждом определении обработчика события. Вот как поступить в вашей ситуации: - Определите тип процедуры, использующейся в качестве обработчика события. Допустим, ваш обработчик 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 совсем простой:
face="Courier New" size="2"> procedure TSomeClass.DoCalculate(I: Integer); begin if Assigned(FOnCalculate) then FOnCalculate(I); end; Теперь вы можете присваивать значение объекту TSomeClass, и назначать любую процедуру событию OnCalculate (естественно, при условии, что ее объявление соответствует объявлению TCalculateEvent). |