Delphi TButton.OnClick 匿名函数用法(无聊转转)

 1 type
 2   TNotifyEventRef = reference to procedure(Sender: TObject);
 3 
 4 function AnonymousEvent(const Proc: TNotifyEventRef): TNotifyEvent;
 5 type
 6   TVtable = array[0..3] of Pointer;
 7   PVtable = ^TVtable;
 8   PPVtable = ^PVtable;
 9 begin
10   TMethod(Result).Code := PPVtable((@Proc)^)^^[3];
11   TMethod(Result).Data := Pointer((@Proc)^);
12 end;
13 
14 procedure TForm1.FormCreate(Sender: TObject);
15 begin
16   //变态写法
17   @Button1.OnClick := PPointer(Cardinal(PPointer(
18     procedure(Sender: TObject)
19     begin
20       ShowMessage('你好,人民币!');
21     end)^) + $0C)^;
22 
23   //正经写法
24   Button2.OnClick := AnonymousEvent(
25     procedure(Sender: TObject)
26     begin
27       ShowMessage('Hello,Money!');
28     end);
29 end;

 

posted @ 2023-10-29 09:55  大宋666  阅读(135)  评论(0)    收藏  举报