Delphi 如何通过新的RTTI设置事件处理程序?[D2010]

Delphi 如何通过新的RTTI设置事件处理程序?[D2010],delphi,delphi-2010,rtti,Delphi,Delphi 2010,Rtti,在使用新的RTTI模块时,我找不到使用新的实用程序设置事件处理程序的方法。试着这样做: LProp := TRttiContext.Create.GetType(Form1.ClassInfo).AsInstance.GetProperty('OnClick'); LProp.SetValue(Form1, {a TValue!}); lValue := TValue.From<TNotifyEvent>(eventHandler); SetValue需要传递一个TValue,

在使用新的RTTI模块时,我找不到使用新的实用程序设置事件处理程序的方法。试着这样做:

LProp := TRttiContext.Create.GetType(Form1.ClassInfo).AsInstance.GetProperty('OnClick');
LProp.SetValue(Form1, {a TValue!}); 
lValue := TValue.From<TNotifyEvent>(eventHandler);
SetValue需要传递一个TValue,但我还没有找到通过TValue表示TMethod的方法。有什么评论吗


还有一个附带问题。。似乎用“L”作为RTTI变量的前缀是一种惯例(在我看来,这是一种很好的惯例,元代码很快就会变成一个难题)。但它实际上代表什么呢?

您可以使用From方法使TValue包含aribtrary类型的值。试着这样做:

LProp := TRttiContext.Create.GetType(Form1.ClassInfo).AsInstance.GetProperty('OnClick');
LProp.SetValue(Form1, {a TValue!}); 
lValue := TValue.From<TNotifyEvent>(eventHandler);
lValue:=TValue.From(eventHandler);
顺便说一句,我认为L只是表示一个局部变量。

“L”表示局部变量。你会在整个印第源代码中看到这种约定。