我动态创建了菜单,但是怎么给菜单添加事件呀?在baidu搜索了一下,只有少数的例子,但太简单了,因为我创建的菜单要求调用一个函数(有两个参数),这两个参数在动态创建菜单的时候指定,请问我该怎么做?谢谢大家!!!
解决方案 »
- delphi如何实现点击按钮 界面切换
- 第一次开发控件,大家来指点一下
- 请问怎样将String转换为TAlignment
- 求助:dephi中怎么用ado动态建表
- Qreport问题:请问如何在detail里实现多表打印??
- 请教关于 Char PChar 的字符处理函数
- 我有新类从TScrollingWinControl继承下来,不知道该如何将滚动条显示的调用出来,还有类似TMemo的效果如何出来?
- 数组数据分批处理
- 请问各位,PLAYSOUND函数在DELPHI的哪个包下?
- 请问如何在DELPHI中打开一个IE浏览器
- ActiveX 在浏览器中不显示????
- TreeView1控件,怎样让某些节点有右键弹出按钮,某些没有右键!
例如在系统菜单插入一个项目
type
TForm1 = class(TForm)
......
......
private
procedure WMSysCommand(var Msg:TWMSysCommand);Message WM_SYSCOMMAND;
end;
.....
.....
implementationprocedure TForm1.FormCreate(Sender: TObject);
var
SysMenu:HMENU;
begin
SysMenu:=GetSystemMenu(Self.Handle,False);
AppendMenu(SysMenu,MF_SEPARATOR,0,''); //插入分割线
AppendMenu(SysMenu,MF_UNCHECKED,20303,Pchar('TEST')); //插入了TEST项
end;procedure TForm1.WMSysCommand(var Msg:TWMSysCommand);
begin
case Msg.CmdType of
20303:;//事件在这里捕捉
else
inherited
end;
end;
谢谢您,这种方法我知道,但是就是不会弄怎么处理参数问题,因为我的菜单要响应一个自写函数(带两个参数),请帮忙
procedure msgbox(sMsg:string);
begin
showmessage(sMsg);
endprocedure TForm1.WMSysCommand(var Msg:TWMSysCommand);
begin
case Msg.CmdType of
20303:msgbox('你好');//事件在这里捕捉
else
inherited
end;
end;
data1=TStringList.Create;
data2=TStringList.Create;
i := 0;
while ...
读入数据项;
data1.Add(数据1);
data2.Add(数据2);
NewItem := TMenuItem.Create(Self);
NewItem.Tag := i;
NewItem.OnClick=doClick;
...
Inc(i);
...procedure doClick(Sender:TObject);
begin
i := (Sender as TMenuItem).Tag;
自定义函数(data1[i],data2[i]);
end;