menu菜单增加图标方法

By admin at 2017-11-18 • 0人收藏 • 745人看过

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

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...