menu菜单增加图标方法
By
admin
at 2017-11-18 • 1人收藏 • 2560人看过
menu菜单栏增加图标的方法,
一般用到menu.add(...)即可,
var menuFile = win.ui.popmenu(winform);//创建弹出菜单
menuFile.add(
"打开",
function(id){
winform.msgbox("打开文件")
}
)
menuFile.add(
text = "标题";
bitmap = "/toolbar.gif";
//bitmapCheckd = "选中位图句柄或路径、或图像数据,可选参数";
proc = function(id){
};
//id = 可选参数;
//flag = 可选参数;
);
但是这种写法有个弊端, 就是没写一个加一次,麻烦.
那么第二种就是可以了利用menu.addtable(...)
//------------------------------------
var menuHelp = win.ui.popmenu(winform);//创建弹出菜单
menuHelp.add(
"关于",
function(id){
winform.msgbox("关于")
}
)
menuHelp.add(); //添加分隔线
menuHelp.addTable( {
{ text = "帮助";
bitmap = "/toolbar.gif";
proc = function(id){
winform.msgbox("帮助")
};
//id = 可选参数;
//flag = 可选参数;
};
{ /*---分隔线---*/ };
{ "退出";
function(id){
winform.close()
}
};
} )这里需要注意:
addTable()中的写法, 每一个需要加图标的按钮都是一个表, 每个表里就和用add()是一样的写法,特别要注意那个函数proc = ... 这个我经常犯错..

两种方法达到同样的效果, 用哪个方便就看个人所需了....
2 个回复 | 最后更新于 2018-09-08
添加菜单的时候附加上是否失效功能:
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
richedit={cls="richedit";text="RichEdit";left=113;top=148;right=637;bottom=447;edge=1;multiline=1;z=1}
)
/*}}*/
import win.ui.menu;
var mainmenu = win.ui.menu(winform);//创建主菜单
var menu = win.ui.popmenu( winform )
menu.addTable( {
{ "全选(&A)"; /*function(id){
richedit.selectAll()
}*/ {{ "复制(&C)"; function(id){
}; 0};
{ "剪切(&T)"; function(id){
}; 0 };}};
{ /*分隔线*/ };
{ "复制(&C)"; function(id){
richedit.copy()
}; 0};
{ "剪切(&T)"; function(id){
richedit.cut()
}; 0 };
{ "粘贴(&P)"; function(id){
richedit.paste()
}; 0 };
{ "删除(&D)"; function(id){
richedit.selText = "";
}; 0 };
{ /*分隔线*/ };
{ "撤消(&U)"; function(id){
richedit.undo()
}; 0 };
{ "重做(&R)"; function(id){
richedit.redo()
}; 1 };
} );
mainmenu.add("菜单标题",menu)
winform.richedit.wndproc = function(hwnd,message,wParam,lParam){
if(message = 0x204/*_WM_RBUTTONDOWN*/){
menu.popup()
}
//无返回值则继续调用默认回调函数
}
winform.show()
win.loopMessage();
登录后方可回帖
今天看richedit文本框代码,发现还有这种写法,可以使能或者失效相应的菜单项
popMenu = function(menuTable){ var richedit = owner; var menu = ..win.ui.popmenu( richedit._parentForm ) menu.addTable( { { "全选(&A)"; function(id){ richedit.selectAll() } }; { /*分隔线*/ }; { "复制(&C)"; function(id){ richedit.copy() }; !richedit.canCopy() ? 0x1/*_MF_GRAYED*/ : 0}; { "剪切(&T)"; function(id){ richedit.cut() }; !richedit.canCopy() ? 0x1/*_MF_GRAYED*/ : 0 }; { "粘贴(&P)"; function(id){ richedit.paste() }; !richedit.canPaste() ? 0x1/*_MF_GRAYED*/ : 0 }; { "删除(&D)"; function(id){ richedit.selText = ""; }; !richedit.canCopy() ? 0x1/*_MF_GRAYED*/ : 0 }; { /*分隔线*/ }; { "撤消(&U)"; function(id){ richedit.undo() }; !richedit.canUndo() ? 0x1/*_MF_GRAYED*/ : 0 }; { "重做(&R)"; function(id){ richedit.redo() }; !richedit.canRedo() ? 0x1/*_MF_GRAYED*/ : 0 }; } ); if(menuTable){ menu.addTable(menuTable); } menu.popup(); menu.close(); };于是,依葫芦
富媒体文本框示例代码就可以改成这种形式,不用写其他的启用形式
winform.richedit.enablePopMenu({ { "哈哈哈(&y)"; function(id){ }; 0 }//0代表使能,1代表失效 });