2009-09-27 6 views
4

En jouant avec un nouveau module RTTI, je n'ai pas trouvé de moyen de définir un gestionnaire d'événements avec les nouveaux utilitaires. Essayer quelque chose comme ceci:Comment configurer les gestionnaires d'événements via le nouveau RTTI? [D2010]

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

SetValue a besoin d'un TValue passé mais je n'ai pas encore trouver un moyen de représenter un TMethod via un TValue. Des commentaires?

ps. Et une question secondaire .. Il semble préfixer les variables RTTI avec "L" est une convention (et un bon IMO, méta code se transforme en un puzzle très rapide). Mais qu'est-ce que cela signifie réellement?

+1

"L" est pour les variables locales. Vous verrez cette convention dans le code source d'Indy. http://stackoverflow.com/questions/1140562/does-my-variable-naming-convention-have-a-name/1140845#1140845 –

Répondre

4

Vous pouvez faire en sorte que TValue contienne une valeur d'un type aribtrary avec la méthode From. Essayez quelque chose comme ceci:

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

BTW Je pense que le L signifie juste un L variables Ocal.

+0

Merci, Mason. Ça cloue ça. –

Questions connexes