关于动态创建菜单的问题(30分)

B

boby

Unregistered / Unconfirmed
GUEST, unregistred user!
我用如下方法动态创建了一个菜单

PopupMenu1 := TPopupMenu.Create(Self);
with PopUpMenu1.Items do
begin
Add(NewItem('submenu1',0,False,True,submenu1click,0,'submenu1'));
end;

其中submenu1click是给该项添加执行代码,我单独写了个过程proc1(value:string),但是加到其中编译不能通过,错误如下

Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter'

还望指教!
 
submenu1click是不能加参数的

proc1(),
 
使用默认的事件参数
 
如果submenu1click不能带参数的话,那应该如何将带参数的函数赋给click事件
 
函数参数只能预事件参数一致,需要其他参数的话,定义数据成员
 
试试:
procedure Form1.InitMenu();
var
i:integer;
MenuBan:TPopupMenu;
MenuItem:TmenuItem;
begin
MenuBan:=TPopupMenu.Create(Self);
MenuBan.OwnerDraw:=true;
MenuItem:=TmenuItem.Create(Self);
MenuItem.Caption:='AA';
MenuItem.OnClick:=MenuItemClick;
MenuItem.OnDrawItem:=DrawItem;
MenuItem.Name:='BB';
MenuBan.Items.Add(MenuItem);
end;

procedure Form1.MenuItemClick(Sender: TObject); //自定
begin
ShowMessage((Sender as TMenuItem).Name);
end;
 
多人接受答案了。
 
顶部