16,748
社区成员
发帖
与我相关
我的任务
分享
type
TCalls = class
published
procedure a1;
procedure a2;
end;
TCall = procedure;
{ TCalls }
procedure TCalls.a1;
begin
ShowMessage('a1');
end;
procedure TCalls.a2;
begin
ShowMessage('a2');
end;
注意方法要放published
function Call(const name: string): Boolean;
var
p: Pointer;
begin
p := TCalls.MethodAddress(name);
Result := p <> nil;
if Result then
TCall(p);
end;
调用直接传入函数名就可以
Call('a1');
Call('a2');
procedure TForm1.proc;
begin
showmessage('abc')
end;
procedure TForm1.Button1Click(Sender: TObject);
var
p1: procedure of object;
begin
p1 := proc;
p1;
end;