菜单点击事件的标志或者索引,或者其它,反正是能识别是哪锅菜单发出的事件
解决方案 »
- 大家帮忙推荐要加密狗带U盘,google好象搜到的全是加密狗。
- delphi 语言怎么实现输入法图标的隐藏啊???急!!!
- Excel问题:急!!!!!!!!!!!!!!!!!!!
- Applicaton.MessageBox(...MB_YESNOCANCEL..) 点Yes按钮会退出,请高手进来帮帮忙
- 有没有自动登陆论坛发贴的工具???
- 为什么用close 关闭程序,窗体关闭了但内存没有真正的释放?(在线)
- 怎样做追加打印--像银行存折,且一次追加可能不止一条记录?
- 请问用ADO对access数据库进行操作应该如何insert记录?
- 在哪里可以下载CSDN论坛的问题—解答集?
- DELPHI中SQL问题
- listbox1中取出指定值的问题
- webbrowse网页里的文件加载前如何取得其消息
procedure TForm1.N11Click(Sender: TObject);
begin
TMenuItem(Sender).Name;//name是唯一的
end;用name作为标识
name也不好识别啊比如 汉字&Open 被你这么一转就成带下划线的字符串了, 如果只比较 open也无法实现
TMenuItem的name一定是唯一的,
你说的现象是TMenuItem的Caption才会有.
procedure TForm1.MenuClick(Sender: TObject);
begin
case TMenuItem(Sender).Tag of
1: ; //菜单项1
2: ; //菜单项2
.....
end;
end;
API的风格就是用WM_COMMAND消息附带的Command ID,每个菜单项的id都是唯一的.用TMenuItem的Command属性就可以取得这个值.
對每個 MenuItem 的TAG賦上值,通過這個來查。
菜单的内容多,数值多了麻烦
begin
...
end;
因为是这样创建的菜单const
GraphicsCaption:array[0..10] of string=();
item:TMenuItem; for i := 0 to length(GraphicsCaption) - 1 do
begin
Item := TMenuItem.Create(MyMenu);
Item.Caption := GraphicsCaption[i];
//Item.Name := GraphicsName[i];//这句实际不用了,所以不知道名字
MyMenu.Items[j].Add(Item);
Item.OnClick := MyProc;
end;
那么这个command是如何自动分配的呢?
我就是这样识别的
由于VCL很好的封装了这层.各个控件的ID号是VCL管理的.你只需要用就可以了.
如果是API编程,这些控件的ID号是需要是手工在资源文件里面分配的.