回调函数:
①
type
FunctionType = function(num: Integer): Integer; // 定义过程类型,申明在单元文件的type下面 Tform之前
// TForm1 = class(TForm)
②
function Callback(n: Integer; cacu: FunctionType): Integer; // 定义回调函数 声明在类成员声明的地方
③
var // 定义程序使用的公共变量
function cacuMultiple(num: Integer): Integer; //声明和过程类型兼容的过程1
function cacuAdd(num: Integer): Integer;//声明和过程类型兼容的过程2 (放在单元的var下面)
④
//implementation // 程序代码实现部分
//{$R *.dfm}
//实现这些过程 在implementation下面;
function cacuAdd(num: Integer): Integer;
begin
Result := num + 2;
end;
function cacuMultiple(num: Integer): Integer;
begin
Result := num * 2;
end;
function TForm1.Callback(n: Integer; cacu: FunctionType): Integer;
begin
Result := cacu(n);
end;
⑤
在事件函数的var里面 声明函数指针变量, 然后给函数指针赋值
function_cacuAdd: FunctionType;
function_cacuMul: FunctionType;
⑥
//在事件函数里面使用这个回调函数
function_cacuMul := cacuAdd; //给函数指针赋值 (注意这里只能是非类成员才能这样赋值)
function_cacuAdd := cacuMultiple; //给函数指针赋值
Edit1.Text := IntToStr(Callback(4, function_cacuMul)); //在回调函数中使用这些指针
Edit2.Text := IntToStr(Callback(4, function_cacuAdd));
①
type
FunctionType = function(num: Integer): Integer; // 定义过程类型,申明在单元文件的type下面 Tform之前
// TForm1 = class(TForm)
②
function Callback(n: Integer; cacu: FunctionType): Integer; // 定义回调函数 声明在类成员声明的地方
③
var // 定义程序使用的公共变量
function cacuMultiple(num: Integer): Integer; //声明和过程类型兼容的过程1
function cacuAdd(num: Integer): Integer;//声明和过程类型兼容的过程2 (放在单元的var下面)
④
//implementation // 程序代码实现部分
//{$R *.dfm}
//实现这些过程 在implementation下面;
function cacuAdd(num: Integer): Integer;
begin
Result := num + 2;
end;
function cacuMultiple(num: Integer): Integer;
begin
Result := num * 2;
end;
function TForm1.Callback(n: Integer; cacu: FunctionType): Integer;
begin
Result := cacu(n);
end;
⑤
在事件函数的var里面 声明函数指针变量, 然后给函数指针赋值
function_cacuAdd: FunctionType;
function_cacuMul: FunctionType;
⑥
//在事件函数里面使用这个回调函数
function_cacuMul := cacuAdd; //给函数指针赋值 (注意这里只能是非类成员才能这样赋值)
function_cacuAdd := cacuMultiple; //给函数指针赋值
Edit1.Text := IntToStr(Callback(4, function_cacuMul)); //在回调函数中使用这些指针
Edit2.Text := IntToStr(Callback(4, function_cacuAdd));