Я пытаюсь использовать RTTI для добавления обработчика событий в элемент управления, для которого уже может быть установлен обработчик событий. Код выглядит примерно так:
var
prop: TRttiProperty;
val: TValue;
begin
prop := FContext.GetType(MyControl.ClassInfo).GetProperty('OnChange');
val := prop.GetValue(MyControl);
FOldOnChange := val.AsType<TNotifyEvent>;
prop.SetValue(MyControl, TValue.From<TNotifyEvent>(self.MyOnChange));
end;
Я хочу это, чтобы я мог сделать это в MyOnChange:
begin
if assigned(FOldOnChange) then
FOldOnChange(Sender);
//additional code here
end;
К сожалению, компилятору не нравится строка FOldOnChange := val.AsType<TNotifyEvent>;
. Это говорит
E2010 Несовместимые типы: 'процедура,
нетипизированный указатель или нетипизированный параметр '
и 'TNotifyEvent'
Кто-нибудь знает, почему это или как это исправить? Это выглядит правильно для меня ...