Como definir manipuladores de eventos via RTTI novo? [D2010]
-
18-09-2019 - |
Pergunta
Jogando com novo módulo RTTI, eu não poderia encontrar uma maneira de definir um manipulador de eventos com os novos utilitários. Tentar algo como isto:
LProp := TRttiContext.Create.GetType(Form1.ClassInfo).AsInstance.GetProperty('OnClick');
LProp.SetValue(Form1, {a TValue!});
SetValue precisa de um TValue passou, mas eu ainda tenho que encontrar uma maneira de representar uma TMethod através de um TValue. Quaisquer comentários?
ps. E uma pergunta lado .. Parece prefixo variáveis ??RTTI com "L" é uma convenção (e um bom IMO, voltas código meta em um verdadeiro quebra-cabeças rápido). Mas o que isso realmente significa?
Solução
Você pode fazer TValue conter um valor de um tipo de aribtrary com o De método. Tente algo parecido com isto:
lValue := TValue.From<TNotifyEvent>(eventHandler);
BTW acho que o L significa apenas um L variável ocal.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow