需求:aardio tabs 控件切换时动态调用不同的方法。
场景:图1 是调用 tab1里面定义的方法。图2 回车怎么调用 tab2里的事件?


import win.ui;
if( ! win.loadForm("\dlg\login\login.aardio").doModal() ){
return;
}
/*DSG{{*/
mainForm = win.form(text="tab窗口";right=959;bottom=591)
mainForm.add(
custom={cls="\dlg\main\userInfo.aardio";text="custom";left=568;top=544;right=944;bottom=584;db=1;dr=1;z=1};
tab={cls="tab";left=8;top=16;right=944;bottom=536;db=1;dl=1;dr=1;dt=1;edge=1;z=2}
)
/*}}*/
var tabs1=mainForm.tab.loadForm("\dlg\main\tabs1.aardio");
var tabs2=mainForm.tab.loadForm("\dlg\main\tabs2.aardio");
var tabs3=mainForm.tab.loadForm("\dlg\main\tabs3.aardio");
mainForm.tab.onnotify = function(id,code,ptr){
if(code==0xFFFFFDD9/*_TCN_SELCHANGE*/)
mainForm.msgbox("切换选项卡")
}
mainForm.onCancel = function(){
mainForm.msgbox("你按了ESC");
mainForm.close();
}
mainForm.onOk = function(){
mainForm.msgbox("你按了Enter");
// 调用 tabs1 的 winform.button.oncommand() 事件
tabs1.button.oncommand();
}
/*
窗口会自动检测默认的对话框快捷键,
默认Enter会触发onOk事件,ESC键会触发onCancel事件,
可选如下自定义检测对话框快捷键函数 winform.isDialogMessage
*/
mainForm.isDialogMessage = function(hwnd,msg){
if( msg.message == 0x100/*_WM_KEYDOWN*/){
if( msg.wParam == 0xD/*_VK_RETURN*/ ){
//return true;//告诉消息处理函数这是一个快捷键,阻止按键消息继续分发
}
if( msg.wParam == 0x1B/*_VK_ESC*/ ){
//return true;//告诉消息处理函数这是一个快捷键,阻止按键消息继续分发
}
}
//检测并响应默认快捷键
return win.isDialogMessage(hwnd,msg);
}
mainForm.show();
return win.loopMessage();