Если я вас правильно понял, вам нужно в вашем классе создать событие, которое будет видно в инспекторе объектов, скажем как OnClick для кнопки. И иметь возможность перекрывать его, то делать нужно так:
Событие –это функция или процедура объявленная с дополнительным идентификатором или как там его называют
of object;.
Пример:
Допустим, ваш обработчик OnRun1 имеет один параметр типа Integer, и OnRun2 имеет один параметр типа Integer и возвращает результат типа Boolean.
То необходимо объявить два типа данных событий:
- Код: Выделить всё
type
TRun1 = procedure(I: Integer) of object;
TRun2 = function(I: Integer):Boolean of object;
Теперь объявите ваш класс:
- Код: Выделить всё
type
TSomeClass = class()
private
FOnRun1: TRun1;
FOnRun2: TRun2;
Protected
procedure DoRun1 (I: Integer); override;
function DoRun2 (I: Integer):Boolean; override;
public
property OnOnRun1: TOnRun1 read FOnOnRun1
write FOnOnRun1;
property OnOnRun2: TOnRun2 read FOnOnRun2
write FOnOnRun2;
end;
Метод DoRun1:- Код: Выделить всё
procedure TSomeClass.DoRun1 (I: Integer);
begin
if Assigned(FOnRun1) then
FOnRun1(I);
end;
Метод DoRun2:- Код: Выделить всё
procedure TSomeClass.DoRun2 (I: Integer) : Boolean;
begin
if Assigned(FOnRun2) then
Result := FOnRun2(I);
end;
Не забываем о области видимости процедур
DoRun1 и
DoRun2, в большинстве случаев это protected.
Если их нужно будет перекрывать то не забываем про
override;
Скажем нужно будет перекрыть в наследнике делаем так:
- Код: Выделить всё
type
TSomeClass2 = class(TSomeClass)
Protected
FI:Integer;
procedure DoRun1 (I: Integer); override;
end;
Метод DoRun1:- Код: Выделить всё
procedure TSomeClass2.DoRun1 (I: Integer);
begin
inherited DoRun1(I); //Вызываем метод родителя
//далее делаем дополнительные операции
FI:=FI+I;
end;
необходимо помнить о том как нужно вызывать метод родителя до или после нужных нам операций, зависит от действий и сложности событий
Писал в блокноте, так что возможны опечатки..
Дополнительные источники:
1-
Как создать свое событие для своего класса2 -
Делегирование события