Ich würde es z.B. so lösen:
Delphi-Quellcode:
type
THuman = class;
TSpeakMethod = procedure(HumanObject: THuman) of object;
THuman = class
FProp1: Integer;
FProp2: Byte;
FSpeakMethod: TSpeakMethod;
public
procedure OnSpeak;
property SpeakMethod: TSpeakMethod read FSpeakMethod write FSpeakMethod;
end;
implementation
{ THuman }
procedure THuman.OnSpeak;
begin
if (@FSpeakMethod <> nil) then
FSpeakMethod(Self);
end;