说起来也只是对工具栏默认事情的重载,首先要认识一下,业务对象的工具栏事件是如何形成的?正如标题所示,这里提到了两类按钮,一种是业务对象的,一种是流程的,下面对他们在WEB如何生成说明一下。
业务对象:
var toolMenu = new mw.controls.ContextMenu();
if ("F" =="F")
{
var acceptMenu = new mw.controls.MenuItem("签收","accept",$mappath("~/icons/Accept.gif"));
acceptMenu.onClick.addHandler(acceptOnClick);
toolMenu.appendItem(acceptMenu);
}

var cancelAcceptMenu = new mw.controls.MenuItem("取消签收","cancelAccept",$mappath("~/icons/cancelAccept.gif"));
cancelAcceptMenu.onClick.addHandler(cancelAcceptOnClick);
toolMenu.appendItem(cancelAcceptMenu);
var deleteMenu = new mw.controls.MenuItem("删除","delete",$mappath("~/icons/delete.gif"));
deleteMenu.onClick.addHandler(deleteOnClick);
toolMenu.appendItem(deleteMenu);
var terminateMenu = new mw.controls.MenuItem("中止","terminate",$mappath("~/icons/terminate.gif"));
terminateMenu.onClick.addHandler(terminateOnClick);
toolMenu.appendItem(terminateMenu);
var jumpMenu = new mw.controls.MenuItem("跳转","jump",$mappath("~/icons/Jump.gif"));
jumpMenu.onClick.addHandler(jumpOnClick);
toolMenu.appendItem(jumpMenu);
var remarkMenu = new mw.controls.MenuItem("备注","remark",$mappath("~/icons/Remark.gif"));
remarkMenu.onClick.addHandler(remarkOnClick);
toolMenu.appendItem(remarkMenu);

toolMenu.onHide.addHandler(function()
{
bdDetailModule.toolBar.items["more"].setChecked(false);
});
流程对象:
with (bdDetailModule.toolBar)
{
appendItem(null, "|");
appendItem("send", "发送", $mappath("~/icons/send.gif")).onClick.addHandler(sendOnClick);
if (1 >0)
appendItem("sendBack", "回退", $mappath("~/icons/SendBack.gif")).onClick.addHandler(sendBackOnClick);
if ("F" =="T")
appendItem("accept", "签收", $mappath("~/icons/Accept.gif")).onClick.addHandler(acceptOnClick);
appendItem(null, "|");
appendItem("viewChart", "查看流程图", $mappath("~/icons/Graphic.gif")).onClick.addHandler(viewChartOnClick);
appendItem("log", "查看日志", $mappath("~/icons/Log.gif")).onClick.addHandler(viewLogOnClick);
appendItem(null, "|");
appendItem("more","其他操作",$mappath("~/icons/tool.gif")).onClick.addHandler(
function(sender,args)
{
sender.setChecked(true);
toolMenu.setIgnoreClick(true);
toolMenu.popup($left(sender.container), $top(sender.container) + $height(sender.container));
});
}
function Application_onStart()
{
if(typeof(bdDetailModule)!="undefined")
{
}
}
bdDetailModule.onLoad.addHandler(function()
{

});
//判断deleteMenu是否存在,因为这里可能在业务对象中不存在删除按钮
if(window.deleteMenu)
{
deleteMenu.onClick.insertHandler(0,function()
{

});
}
if(bdDetailModule.toolBar.items[9].text == "发送")
{
bdDetailModule.toolBar.items[9].onClick.insertHandler(0,function()
{
});
}
业务对象:
var toolMenu = new mw.controls.ContextMenu();
if ("F" =="F")
{
var acceptMenu = new mw.controls.MenuItem("签收","accept",$mappath("~/icons/Accept.gif"));
acceptMenu.onClick.addHandler(acceptOnClick);
toolMenu.appendItem(acceptMenu);
}
var cancelAcceptMenu = new mw.controls.MenuItem("取消签收","cancelAccept",$mappath("~/icons/cancelAccept.gif"));
cancelAcceptMenu.onClick.addHandler(cancelAcceptOnClick);
toolMenu.appendItem(cancelAcceptMenu);
var deleteMenu = new mw.controls.MenuItem("删除","delete",$mappath("~/icons/delete.gif"));
deleteMenu.onClick.addHandler(deleteOnClick);
toolMenu.appendItem(deleteMenu);
var terminateMenu = new mw.controls.MenuItem("中止","terminate",$mappath("~/icons/terminate.gif"));
terminateMenu.onClick.addHandler(terminateOnClick);
toolMenu.appendItem(terminateMenu);
var jumpMenu = new mw.controls.MenuItem("跳转","jump",$mappath("~/icons/Jump.gif"));
jumpMenu.onClick.addHandler(jumpOnClick);
toolMenu.appendItem(jumpMenu);
var remarkMenu = new mw.controls.MenuItem("备注","remark",$mappath("~/icons/Remark.gif"));
remarkMenu.onClick.addHandler(remarkOnClick);
toolMenu.appendItem(remarkMenu);
toolMenu.onHide.addHandler(function()
{
bdDetailModule.toolBar.items["more"].setChecked(false);
});
with (bdDetailModule.toolBar)
{
appendItem(null, "|");
appendItem("send", "发送", $mappath("~/icons/send.gif")).onClick.addHandler(sendOnClick);
if (1 >0)
appendItem("sendBack", "回退", $mappath("~/icons/SendBack.gif")).onClick.addHandler(sendBackOnClick);
if ("F" =="T")
appendItem("accept", "签收", $mappath("~/icons/Accept.gif")).onClick.addHandler(acceptOnClick);
appendItem(null, "|");
appendItem("viewChart", "查看流程图", $mappath("~/icons/Graphic.gif")).onClick.addHandler(viewChartOnClick);
appendItem("log", "查看日志", $mappath("~/icons/Log.gif")).onClick.addHandler(viewLogOnClick);
appendItem(null, "|");
appendItem("more","其他操作",$mappath("~/icons/tool.gif")).onClick.addHandler(
function(sender,args)
{
sender.setChecked(true);
toolMenu.setIgnoreClick(true);
toolMenu.popup($left(sender.container), $top(sender.container) + $height(sender.container));
});
}
从前面的形成过程,我们可以看出两者在引用机制上的不一样。现在就自定义事件的步骤作如下说明:
(1) 因为要在脚本在皮肤中生效,所以必须在application.js中写脚本,这样必须配置应用的周知标志,一般是按照包的顺序命名
(2) 引用空间$import("mw.businesslogic.BusinessDataManagerClass");
(3) 最好在Application_onStart事件中判断bdDetailModule的存在,结构如下:
function Application_onStart()
{
if(typeof(bdDetailModule)!="undefined")
{
}
}
(4) 通过三种方式实现
//加载BaseDetailModule的默认事件
bdDetailModule.onLoad.addHandler(function()
{
});//通过直接引用变量加载事件
//判断deleteMenu是否存在,因为这里可能在业务对象中不存在删除按钮
if(window.deleteMenu)
{
deleteMenu.onClick.insertHandler(0,function()
{
});
}//通过位置索引加载事件
if(bdDetailModule.toolBar.items[9].text == "发送")
{
bdDetailModule.toolBar.items[9].onClick.insertHandler(0,function()
{
});
}
这里要可以通过var objID = bdDetailModule.activeBDDetailModule.objID获取当前流程的业务对象ID


浙公网安备 33010602011771号