4

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

LProp := TRttiContext.Create.GetType(Form1.ClassInfo).AsInstance.GetProperty('OnClick');
LProp.SetValue(Form1, {a TValue!}); 

SetValue 需要传递一个 TValue,但我还没有找到一种通过 TValue 表示 TMethod 的方法。任何意见?

附言。还有一个附带问题..似乎用“L”作为RTTI变量的前缀是一种约定(而且是一个很好的IMO,元代码很快就变成了一个难题)。但它实际上代表什么?

4

1 回答 1

4

您可以使用 From 方法使 TValue 包含任意类型的值。尝试这样的事情:

lValue := TValue.From<TNotifyEvent>(eventHandler);

顺便说一句,我认为L只是意味着一个本地变量。

于 2009-09-27T00:47:20.390 回答