找回密码
 立即注册

QQ登录

只需一步,快速开始

小菜鸡xx

初级会员

39

主题

142

帖子

417

积分

初级会员

积分
417
小菜鸡xx
初级会员   /  发表于:2023-11-14 16:16  /   查看:1479  /  回复:10
1金币
本帖最后由 Richard.Huang 于 2023-11-15 10:00 编辑

产品:SpreadJS

最佳答案

查看完整内容

好的,您参考下面的代码: let command = { canUndo: true, execute: function (context, options, isUndo) { let Commands = GC.Spread.Sheets.Commands; options.cmd = "myClearValues"; if (isUndo) { Commands.undoTransaction(context, options); return true; } else { Commands.startTransaction(context, options); let selections = spr ...

10 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 16:16:18
来自 8#
好的,您参考下面的代码:

  let command = {
    canUndo: true,
    execute: function (context, options, isUndo) {
      let Commands = GC.Spread.Sheets.Commands;
      options.cmd = "myClearValues";
      if (isUndo) {
        Commands.undoTransaction(context, options);
        return true;
      } else {
        Commands.startTransaction(context, options);
        let selections = spread.getActiveSheet().getSelections()[0];
        console.log("command execute");
        for (let i = selections.row; i < selections.rowCount; i++) {
          for (let j = selections.col; j < selections.colCount; j++) {
            if (sheet.getFormula(i, j) == null) {
              continue;
            } else {
              console.log("contain formula");
              return true;
            }
          }
        }

        spread.commandManager().execute({
          cmd: "clearValues",
          sheetName: "Sheet1",
          ranges: [spread.getActiveSheet().getSelections()[0]],
        });

        Commands.endTransaction(context, options);
        return true;
      }
    },
  };
  let commandManager = spread.commandManager();
  commandManager.register("myClearValues", command);

  spread
    .commandManager()
    .setShortcutKey(
      "myClearValues",
      45,
      false,
      false,
      false,
      false
    );

代码的效果为按下Insert键触发自定义Command,实现Clear的效果。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 16:44:23
2#
目前支持的快捷键如下:

image.png60847472.png

并不包含Insert键。

快捷键的接口为:setShortcutKey,您可以参考:https://demo.grapecity.com.cn/sp ... ager#setshortcutkey
回复 使用道具 举报
小菜鸡xx
初级会员   /  发表于:2023-11-14 16:54:15
3#
Joestar.Xu 发表于 2023-11-14 16:44
目前支持的快捷键如下:

能自定义不
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 17:19:50
4#
您好,这个目前没有办法,setShortcutKey中只能设置SpreadJS支持的快捷键。
回复 使用道具 举报
小菜鸡xx
初级会员   /  发表于:2023-11-14 17:24:53
5#
Joestar.Xu 发表于 2023-11-14 17:19
您好,这个目前没有办法,setShortcutKey中只能设置SpreadJS支持的快捷键。

register这个可以自定方法,
mmandManager.register('ShortcutKeyE', ShortcutKeyE, 'E'.charCodeAt(0), true, false, false, false);
  commandManager.register('ShortcutKeyF', ShortcutKeyF, 'F'.charCodeAt(0), true, false, false, false);
  commandManager.register('ShortcutKeyD', ShortcutKeyD, 'D'.charCodeAt(0), true, false, false, false);
这样可以设置别的快捷键是不
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 17:36:02
6#
本帖最后由 Joestar.Xu 于 2023-11-14 17:37 编辑

不好意思,这边测试了一下,虽然Insert不在GC.Spread.Commands.Key中,但仍然是可以生效的,无论是register接口还是setShortcutKey,只要KeyCode正确就是可以的。

但也因为Insert不在GC.Spread.Commands.Key中,不排除在后续版本中出现问题的可能,所以需要您这边慎重考虑一下。
回复 使用道具 举报
小菜鸡xx
初级会员   /  发表于:2023-11-14 17:45:44
7#
Joestar.Xu 发表于 2023-11-14 17:36
不好意思,这边测试了一下,虽然Insert不在GC.Spread.Commands.Key中,但仍然是可以生效的,无论是register ...

你怎么设置的我看看呗
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-15 10:16:44
9#
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。
回复 使用道具 举报
小菜鸡xx
初级会员   /  发表于:2023-11-15 14:30:02
10#
Joestar.Xu 发表于 2023-11-15 10:16
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。

解决了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部