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