事件,在JSA中是一项非常重要的一块。用户的每一次操作都是一个事件,比如:
选中一个单元格或单元格区域;切换到另外一个工作表;关闭工作簿;点击一个单元格等等。。这些都是事件,JSA系统都会对这些事件进行监听,当事件发生时,会产生点什么结果。
当我们为这个事件发生时要产生的结果编个程序,那么事件发生的时候就会按这个程序执行。。
事件让程序的运行显得智能化了。
JSA宏教程中有事件的对象模型就三个:Application对象、Workbook对象、WorkSheet对象。
接下来几期里,我们将陆续熟悉这几个对象的事件:
Application对象的事件列表:
可以看到,在上图中,Application对象因为是顶层对象,它拥有了workbook对象的事件、worksheet对象的事件、还有几个关于window窗口的事件,以及最后的文档主题变化的事件。也就是在WPS表格里,Application作为顶层对象,它拥有它的子对象事件。只不过,在顶层对象中对子对象事件的撑控的视野与子对象自身是不一样的。
事件简单介绍
1、Workbook相关的事件:
包含了:工作簿的新建、打开、关闭、打印、保存、失去焦点、获得焦点、创建新工作表、创建新图表这些
2、workSheet相关的事件:
包含了:工作表的失去焦点、获得焦点、删除前、双击前、右击前、工作表计算、工作表切换、选择区改变、超链接跟踪等等
3、Window相关的事件
包含:窗口失去焦点、获得焦点、改变大小
4、文档相关的事件
文档主题改变事件
练习
练习1、关于工作簿事件的练习。
分别练习工作簿的打开、新建、新建工作表、保存、关闭、失焦、获焦这几个事件:
/*
练习1、关于工作簿事件的练习。
分别练习工作簿的打开、新建、新建工作表、保存、关闭、失焦、获焦这几个事件
*/
//打开工作簿
function Application_WorkbookOpen(wk)
{
alert(`工作簿被打开了:打开的工作簿名称是${wk.Name}`);
}
//新建工作簿
function Application_NewWorkbook()
{
alert('新建了一个工作簿');
}
//新建工作表
function Application_WorkbookNewSheet(Wb, Sh)
{
alert(`在${Wb.Name}工作簿中新建了一个工作表${Sh.Name}`);
}
//保存工作簿
function Application_WorkbookAfterSave(Wb, Success)
{
let r = Success ? "成功":"失败";
alert(`${Wb.Name}工作簿保存${r}`);
}
//关闭工作簿
function Application_WorkbookBeforeClose(Wb, Cancel)
{
alert(`${Wb.Name}工作簿正在关闭`);
}
//工作簿获焦
function Application_WorkbookActivate(Wb)
{
alert(`${Wb.Name}工作簿获得了焦点`);
}
//工作簿失焦
function Application_WorkbookDeactivate(Wb)
{
alert(`${Wb.Name}工作失去了焦点`);
}
一个关闭事件,引发两个事件。
练习2、关于工作表事件的练习。
分别练习工作表的切换、删除、选择区改变、双击、失焦、获焦这几个事件
/*
练习2、关于工作表事件的练习。
分别练习工作表的切换、删除、选择区改变、双击、失焦、获焦这几个事件
*/
function Application_SheetChange(Sh, rg)
{
alert(`选中了${Sh.Name}工作表`);
}
function Application_SheetBeforeDelete(Sh)
{
alert(`删除了${Sh.Name}工作表`);
}
function Application_SheetBeforeDoubleClick(Sh, rg, cancel)
{
alert(`双击了${Sh.Name}工作表中的${rg.Address()}区域`);
}
function Application_SheetActivate(Sh)
{
alert(`${Sh.Name}获得焦点`);
}
function Application_SheetDeactivate(Sh)
{
alert(`${Sh.Name}失去焦点`);
}
练习3、关于app窗口事件的练习。
分只是因为练习app窗口改变大小、失焦和获焦这几个事件。
/*
练习3、关于app窗口事件的练习。
分只是因为练习app窗口改变大小、失焦和获焦这几个事件。
*/
function Application_WindowActivate(Wb, Wn)
{
alert(`${Wb.Name},${Wn.Caption}窗口获得焦点`);
}
function Application_WindowDeactivate(Wb, Wn)
{
alert(`${Wb.Name},${Wn.Caption}窗口失去焦点`);
}
function Application_WindowResize(Wb, Wn)
{
alert(`${Wb.Name},${Wn.Caption}窗口大小在改变`);
}
以上代码复制后即可运行。
小编的演示文档会保存起来,免费提供给大家学习,如有需要关注后私信说明要哪一章节的演示文档。
请注意:演示文档与小编的教程同步即是小编的教程到哪一步,演示文档就到哪一章节。