J'essaie d'utiliser RTTI pour ajouter un gestionnaire d'événements à un contrôle, qui peut déjà avoir un gestionnaire d'événements. Le code ressemble à ceci:Quelqu'un sait comment utiliser TValue.AsType <TNotifyEvent> correctement?
var
prop: TRttiProperty;
val: TValue;
begin
prop := FContext.GetType(MyControl.ClassInfo).GetProperty('OnChange');
val := prop.GetValue(MyControl);
FOldOnChange := val.AsType<TNotifyEvent>;
prop.SetValue(MyControl, TValue.From<TNotifyEvent>(self.MyOnChange));
end;
Je veux que ce que je puisse le faire en MyOnChange:
begin
if assigned(FOldOnChange) then
FOldOnChange(Sender);
//additional code here
end;
Malheureusement, le compilateur ne semble pas que la ligne FOldOnChange := val.AsType<TNotifyEvent>;
. Il dit
E2010 types incompatibles: « procédure, pointeur typées ou paramètre non typé » et « TNotifyEvent »
Quelqu'un sait pourquoi ou comment réparer? Il me semble juste ...
méthode par rapport à résultat de la méthode dans le contexte des grèves pointeur de la méthode à nouveau ... –