Я нашел решение, используя тип TMethod
:
TMyMethod = procedure () of object;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
procedure CallMethod(AMethod : TMethod);
procedure ShowCaption();
end;
procedure TForm1.CallMethod(AMethod : TMethod);
begin
TMyMethod(AMethod)();
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Meth : TMethod;
begin
Meth.Data := Self;
Meth.Code := @TForm1.ShowCaption;
CallMethod(Meth);
end;
procedure TForm1.ShowCaption();
begin
ShowMessage(Self.Caption);
end;
Кажется, он работает хорошо, но мне интересно, безопасно ли это или может привести к другим проблемам.
Если есть лучший / альтернативный способ, опубликуйте его, и я буду рад его рассмотреть