type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure BBB(I: Integer);
procedure CCC(I: Integer);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Txxx=class
procedure test;
end;
TMyProc=procedure of Object;
TMyFunc=function(a: Integer): Integer of Object;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Txxx.test;
begin
showmessage('1');
end;
procedure TForm1.BBB(I: Integer);
begin
showmessage( 'BBB: ' + IntToStr(I));
end;
procedure TForm1.CCC(I: Integer);
begin
showmessage( 'CCC: ' + IntToStr(I));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcPtr:TMyProc;
obj:Txxx;
begin
obj:=Txxx.Create;
ProcPtr:= obj.test;//Txxx.test;
ProcPtr;
obj.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
type
Taaa = procedure (i:integer) of object ;
var
ap: Taaa;
begin
ap := BBB; //这里有一个隐含Self,完整格式: self.BBB;这里把BBB这个方法赋给ap这个变量,注意BBB与ap的声明原型要一样,不然会有错
ap(1);
ap := CCC;
ap(2);
end;
end.