找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

261

帖子

1682

积分

超级版主

Rank: 8Rank: 8

积分
1682
Winny
超级版主   /  发表于:2021-12-1 17:15  /   查看:2336  /  回复:0
用户在自定义工具栏时,希望将自定义的按钮所执行的操作也可以记录到撤销重做栈中,本文提供了一种自定义命令进入撤销重做记录的实现方式。
1. 将自定义的可重做命令注册到当前Designer的resources中
  1. let resource = GC.Spread.Sheets.Designer.getResources()
  2.         resource.commandMap["spreadChangeColor"] = "添加背景"
  3.         GC.Spread.Sheets.Designer.setResources(resource)
复制代码
2.  自定义ribbon
  1. // 添加ribbon tab
  2.         let config = GC.Spread.Sheets.Designer.DefaultConfig
  3.         let customRibbon = {
  4.             id: 'operate',
  5.             // tab名称
  6.             text: '自定义操作',
  7.             buttonGroups: [
  8.                 {
  9.                     // 子按钮类别名称
  10.                     label: '------',
  11.                     commandGroup:{
  12.                         direction: 'vertical',
  13.                         // 子命令
  14.                         commands: ['designerChangeColor']
  15.                     }
  16.                 }
  17.             ],
  18.         }
  19.         // 子按钮定义
  20.         let designerChangeColorCommand = {
  21.             text: "背景色",
  22.             commandName: 'designerChangeColor',
  23.             execute: designerChangeColorFun
  24.         }
  25.         // push新tab
  26.         config.ribbon.push(customRibbon);
  27.         //定义命令映射关系
  28.         config.commandMap = {
  29.             designerChangeColor: designerChangeColorCommand,
  30.         };
  31.         
  32.         let designer = new GC.Spread.Sheets.Designer.Designer('designer_container')
  33.         let spread = designer.getWorkbook()

  34.         function designerChangeColorFun(){
  35.             // 调用spread上可撤销的自定义命令
  36.             let spread = designer.getWorkbook()
  37.             let sheet = spread.getActiveSheet()
  38.             spread.commandManager().execute({cmd: "spreadChangeColor", selections: sheet.getSelections(),sheetName: sheet.name(),row: sheet.getActiveRowIndex(),col: sheet.getActiveColumnIndex()})
  39.         }
复制代码
3. 注册可撤销命令spreadChangeColor
  1. spread.commandManager().register("spreadChangeColor",{
  2.             // 注册可撤销命令
  3.                 canUndo: true,
  4.                 execute: function(context,options,isUndo){
  5.                     var Commands = GC.Spread.Sheets.Commands;
  6.                     if (isUndo) {
  7.                         Commands.undoTransaction(spread, options);
  8.                         return true;
  9.                     } else {
  10.                         let sheet = context.getActiveSheet()
  11.                         Commands.startTransaction(context, options);
  12.                         // let selection =options.selections[0];
  13.                         // sheet.getCell(selection.row,selection.col).backColor('#789067')
  14.                         sheet.getCell(options.row,options.col).backColor('#789067')
  15.                         Commands.endTransaction(context, options);
  16.                         return true;
  17.                     }
  18.                 }
  19.             })
复制代码
详细demo参考附件,若资源不可用,请自行更换html中的资源即可。




自定义ribbon操作写入历史栈.html

4.65 KB, 下载次数: 56

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部