Потому что Func1 и Func2 - это процедуры, а Func3 - это метод объекта (TMethod).
Процедуру в метод превратить можно:
Код:
type
TTestProc = procedure of Object;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
TestProc: TTestProc;
procedure TestProc1;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TestProc2;
begin
ShowMessage('Method 2');
end;
procedure TForm1.TestProc1;
begin
ShowMessage('Method 1');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
p: TMethod;
begin
TestProc := TestProc1;
TestProc;
p.Data := @Sender;
p.Code := @TestProc2;
TestProc := TTestProc(p);
TestProc;
end;
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
|