进一步就此post其接受的答案仍然很神秘:传输处理器<TObject>到TNotifyEvent
@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](http://code.google.com/p/delphisorcery/source/browse/trunk/Source/Core/DSharp.Core.Events .PAS)。 – 2012-07-15 14:11:22
@Stefan Glienke:谢谢你提醒我,我确实在我的盒子上安装了DSharp,我错过了它(对我来说,我经常不经常使用它),但是相信自从它诞生以来就遵循它(Bwt I我也是DelphiPraxis的成员,不擅长德语,但努力关注德国德尔福的繁荣景象)。肯定泛型是我的下一步。谢谢* Stevie * :-) – menjaraz 2012-07-15 14:27:15