受け入れられた答えが非常に不可解なままであるこの投稿にさらに:
@Button1.OnClick := pPointer(Cardinal(pPointer( procedure (sender: tObject) begin ((sender as TButton).Owner as TForm).Caption := 'Freedom to anonymous methods!' end )^ ) + $0C)^;
次のような最もシンプルでエレガントな方法を考案できるかどうか疑問に思います。
Button.OnClick :=
AnonProc2NotifyEvent (
procedure (Sender: TObject)
begin
((Sender as TButton).Owner as TForm).Caption := 'Freedom to anonymous methods!'
end
);
同じ目的を達成するために、AnonProc2NotifyEvent は、次のシグネチャを持つ Button の所有者のメソッドです。
TOwnerOfButton = class(TForm)
Button: TButton;
...
private
...
protected
function AnonProc2NotifyEvent(aProc: TProc<TObject>): TNotifyEvent;
public
...
end;
それは実現可能ですか?もしそうなら、それを実装する方法は?