Показать сообщение отдельно
  #2  
Старый 01.02.2021, 17:48
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Потому что 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% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием