menu菜单增加图标方法

By admin at 2017-11-18 • 1人收藏 • 2493人看过

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 = 可选参数;
);

blob.png

但是这种写法有个弊端, 就是没写一个加一次,麻烦.

那么第二种就是可以了利用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 = ... 这个我经常犯错..

blob.png

两种方法达到同样的效果, 用哪个方便就看个人所需了....

2 个回复 | 最后更新于 2018-09-08
2018-09-01   #1

今天看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代表失效
			
			});

blob.png

2018-09-15   #2

添加菜单的时候附加上是否失效功能:

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();

image.png

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...