unit Myobjclass;interface
uses Controls, StdCtrls,Classes, SysUtils, forms, Windows;type
  TCallBack = procedure(x: Integer) of object;
  
  TMyobj = Class(TComponent)
  private
  public
    procedure SendMsg(var a:integer; callback: TCallBack); safecall;
  end;implementationprocedure TMyobj.SendMsg(var a:integer; callback: TCallBack); safecall;
var i: integer;
begin
  for i:= 1 to 5 do
  begin
    callback(i);
  end;
end;end.
//============================下面是在form中调用======================================
unit test;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Myobjclass;type
  TFMsgTest = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    function CallBack(x: Integer): TCallBack; // 回调函数
  public
  end;
var
  FMsgTest: TFMsgTest;implementation
{$R *.dfm}procedure TFMsgTest.Button1Click(Sender: TObject);
var
  x, a: Integer;
begin
  x := 0;
  with TMyobj.Create(self) do
  begin
    SendMsg(a, CallBack(x));
    free;
  end;
end;function TFMsgTest.CallBack(x: Integer): TCallBack;
begin
  Memo1.Lines.Add(IntToStr(x)); 
end;end.