2009-09-27 67 views
4

使用新的RTTI模塊時,我找不到用新實用程序設置事件處理程序的方法。嘗試是這樣的:如何通過新的RTTI設置事件處理程序? [D2010]

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

的SetValue需要通過一個TValue,但我還沒有找到一種方法,通過TValue來表示TMethod。任何意見?

ps。還有一個方面的問題。它看起來RTTI變量前綴「L」是一個慣例(和一個很好的IMO,元代碼真正快速變成一個謎題)。但它實際上代表什麼?

+1

「L」用於局部變量。您將在整個Indy源代碼中看到該慣例。 http://stackoverflow.com/questions/1140562/does-my-variable-naming-convention-have-a-name/1140845#1140845 – 2009-09-27 16:15:52

回答

4

您可以使用From方法使TValue包含aribtrary類型的值。嘗試是這樣的:

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

BTW我覺得我只是意味着大號 OCAL變量。

+0

謝謝,梅森。這釘了它。 – 2009-09-27 18:42:31

相關問題