【发布时间】:2012-07-14 13:12:12
【问题描述】:
除此之外post,其接受的答案仍然非常神秘:
@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;
这可行吗?如果可行,如何实施?
【问题讨论】:
-
你可能想看看DSharp.Core.Events.pas。
-
@Stefan Glienke:谢谢你提醒我,我确实在我的盒子上安装了 DSharp,但我错过了它(我不屑一顾,我不经常使用它)但相信我会关注它自成立以来(顺便说一句,我也是 DelphiPraxis 的成员,德语不是很好,但努力关注蓬勃发展的德国 Delphi 场景)。可以肯定的是,Generics 是我的下一步。谢谢史蒂夫 :-)
标签: delphi delphi-xe anonymous