我正在尝试使用 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”
任何人都知道这是为什么或如何解决它?在我看来是对的...