delphi中經常見到以下兩種定義
Type
TMouseProc = procedure (X,Y:integer);
TMouseEvent = procedure (X,Y:integer) of Object;
兩者樣子差不多但實際意義卻不一樣,
TMouseProc只是單一的函數指針類型;
TMouseEvent是對象的函數指針,也就是對象/類的函數/方法
區別在於類方法存在一個隱藏參數self,也就是說兩者形參不一樣,所以不能相互轉換
這也就是爲什麼delphi中可以這樣賦值 button1.onClick:=button2.onClick;
卻不能這樣賦值 button1.οnclick=buttonclick; (buttonclick爲本地函數,button2.onclick爲類方法)
的原因!