阅读文章后如何通过新的 RTTI 设置事件处理程序?,我想知道是否可以更动态地解决这个问题。例如,我想将任何组件的所有事件处理程序设置为零。
使用TValue.From <TNotifyEvent> (SomeMethod)
不起作用有两个原因:1. 类型未知(可能是 TNotifyEvent、TMouseEvent 等) 2. 我无法将“SomeMethod”设置为 nil(无效转换)
在旧的 RTTI 风格中,我会做类似的事情:
var
NilMethod: TMethod;
begin
[...]
NilMethod.Data := nil;
NilMethod.Code := nil;
SetMethodProp (AComponent,PropertyName,NilMethod);