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.
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.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货