2011年3月23日 星期三

Delphi TNotifyEvent用參數的問題

本來以為用若名函數可以搞定:
//以下方法不能編譯過
Button1.OnClick := procedure( sender : tobject ) begin
//...code
end;

結果不能通過。
後來找了好久才發現另外一個妙招,Delphi舊版的也可以用

procedure Click(Self : TObject; Sender: TObject);
var lv : TLvItem;
begin
lv := TLvItem(Self);
//.....code..
end;

function _CreateMenuItem(lv : TLvItem):TMenuItem;
var Meth: TMethod;
begin
Meth.Data := lv;
Meth.Code := @Click;
Result.OnClick := TNotifyEvent(Meth);
end;