http://www.cnblogs.com/del/archive/2008/01/15/1039415.html
{定义方法类型}
type
TFunType = function(x: Integer): Integer; {函数类型}
TProcType = procedure(name: string); {过程类型}
{定义一个符合 TFunType 类型的函数}
function MyFun(x: Integer): Integer;
begin
Result := x * 2;
end;
{定义一个符合 TProcType 类型的过程}
procedure MyProc(name: string);
begin
ShowMessage('我是' + name);
end;
{使用}
procedure TForm1.Button1Click(Sender: TObject);
var
Fun : TFunType; {定义一个 TFunType 类型的变量}
Proc: TProcType; {定义一个 TProcType 类型的变量}
begin
Fun := MyFun; {让变量 Fun 指向和它具有同样参数和返回值的自定义函数 MyFun}
Proc := MyProc; {让变量 Proc 指向和它具有同样参数的自定义过程 MyProc}
{现在这两个方法的变量 Fun、Proc 可以使用了}
ShowMessage(IntToStr(Fun(4))); {8}
Proc('万一'); {我是万一}
end