//按钮嵌按钮 import win.ui; import win.ui.menu; /*DSG{{*/ var winform = win.form(text="按钮中嵌按钮";right=599;bottom=399) winform.add( btnInner={cls="button";text="4";left=183;top=47;right=209;bottom=77;dr=1;dt=1;font=LOGFONT(charset=2;name='Marlett';weight=500);z=2}; button={cls="button";text="按钮中按钮";left=53;top=43;right=213;bottom=83;dr=1;dt=1;z=1}; button2={cls="button";text="按钮中按钮";left=53;top=187;right=213;bottom=227;dr=1;dt=1;z=3} ) /*}}*/ /* winform.btnInner 与 winform.button 必须设置相同的固定边距属性 - 以保持在缩放时移动到相同位置 */ //设置父窗口 winform.btnInner.setParent( winform.button ) //允许父窗口转发子窗口的命令(_WM_COMMAND)与通知(_WM_NOTIFY)消息 winform.button.translateCommand(); /* 响应命令。 _WM_COMMAND 是由控件发送给父窗口, 父窗口解析此消息才能调用控件的 oncommand 函数。 父窗口必须调用 translateCommand() 函数, */ winform.btnInner.oncommand = function(id,event){ //按下鼠标右键,下面获取按钮屏幕坐标 var rc = winform.btnInner.getRect(true/*使用屏幕坐标*/) //创建弹出菜单 win.ui.popmenu(winform).addTable( { { "测试"; function(id){ winform.msgbox("测试") } }; { "退出程序"; function(id){ winform.close() } }; } ).popup(rc.left,rc.bottom,true/*使用屏幕坐标*/) } //更简单的方法是调用 addCtrl 函数直接在按钮内部添加控件,一句代码代码上面所有步骤。 var innerButton = winform.button2.addCtrl( cls="button";marginRight=2;marginTop=1;marginBottom=4;width=16;text="4";font=LOGFONT(charset=2;name='Marlett';weight=500); oncommand = function(id,event){ owner.msgbox(owner.text) } ) winform.show() win.loopMessage();