| 
 Потому что 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; |