目的:实现动态事件赋值和加载
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public FList: TStringList; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin FList.AddObject('1', @Button2.OnClick); ShowMessage(IntToStr(Integer(@Button2.OnClick))); end; procedure TForm1.FormCreate(Sender: TObject); begin FList := TStringList.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FList.Free; end; procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage('1'); end; procedure TForm1.Button3Click(Sender: TObject); var vClick: TNotifyEvent; M: TMethod; begin ShowMessage(IntToStr(Integer(Pointer(FList.Objects[0])))); m.Code := Pointer(FList.Objects[0]); m.Data := Pointer($FFFF); vClick := TNotifyEvent(M); vClick(self); end;