【问题标题】:How to set event handlers via new RTTI? [D2010]如何通过新的 RTTI 设置事件处理程序? [D2010]
【发布时间】:2009-09-27 00:10:14
【问题描述】:

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

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

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

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

【问题讨论】:

标签: delphi delphi-2010 rtti


【解决方案1】:

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

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

顺便说一句,我认为 L 只是表示 L局部变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多