//把一個方法當作另一個方法的參數, 就是回調方法, 大家習慣稱作回調函數 type TFunType = function(i: Integer): Integer; {聲明一個方法類型} function MyFun(i: Integer): Integer; {建立類型兼容的函數} begin Result := i*2; end; {把函數當作參數, 再定義一個函數} function MyTest(x: Integer; F: TFunType): Integer; begin Result := F(x); end; {測試} procedure TForm1.Button1Click(Sender: TObject); var Fun: TFunType; {聲明一個 TFunType 的變量} i: Integer; begin Fun := MyFun; {讓方法變量 Fun 指向和它類型兼容的一個方法} {測試 Fun; Fun 是一個方法變量, 現在去執行那個方法, 它就可以當作那個方法來使用了} i := Fun(4); ShowMessage(IntToStr(i)); //8 {把 Fun 當作參數使用; 把函數當作參數使用, 這就是回調函數} i := MyTest(4,Fun); ShowMessage(IntToStr(i)); //8 end;
http://www.cnblogs.com/del/archive/2008/01/15/1039476.html