RTTIを使用して、イベントハンドラーが既に設定されている可能性のあるコントロールにイベントハンドラーを追加しようとしています。コードは次のようになります。
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;
MyOnChangeでこれを実行できるように、これが必要です。
begin
if assigned(FOldOnChange) then
FOldOnChange(Sender);
//additional code here
end;
残念ながら、コンパイラはこの行を気に入らないようですFOldOnChange := val.AsType<TNotifyEvent>;。それは言う
E2010互換性のないタイプ:'プロシージャ、型指定されていないポインタ、または型指定されていないパラメータ'および' TNotifyEvent '
それがなぜなのか、それを修正する方法を知っている人はいますか?それは私には正しく見えます...