找回密码
 立即注册

QQ登录

只需一步,快速开始

allen-an

注册会员

16

主题

45

帖子

145

积分

注册会员

积分
145
allen-an
注册会员   /  发表于:2022-11-10 11:04  /   查看:3637  /  回复:17
1金币
本帖最后由 Ellia.Duan 于 2022-11-14 09:41 编辑

我使用了 sheet.fillAuto()这个方法操作后按 ctrl+z 快捷键不能实现撤销功能。请问跟我使用注册快捷键实现自动填充有关系吗?怎么解决呢?
  1. spread.commandManager().register('fillDown', () => {
  2.     spread.suspendEvent();
  3.     const sheet = spread.getActiveSheet();
  4.     const { row, col, rowCount, colCount } = sheet.getSelections()[0];
  5.     let startRange: GC.Spread.Sheets.Range, wholeRange: GC.Spread.Sheets.Range;
  6.     for (let i = 0; i < colCount; i++) {
  7.       startRange = new GC.Spread.Sheets.Range(row, col + i, 1, 1);
  8.       wholeRange = new GC.Spread.Sheets.Range(row, col + i, rowCount, 1);
  9.       sheet.fillAuto(startRange, wholeRange, {
  10.         fillType: 0,
  11.         series: 0,
  12.         direction: 3,
  13.       });
  14.     }
  15.     spread.resumeEvent();
  16.   });
  17. spread.commandManager().setShortcutKey('fillDown', 68, false, true, true, false);
复制代码


17 个回复

正序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-10 18:07:51
18#
问题解决了就好,那本帖就先结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
allen-an
注册会员   /  发表于:2022-11-10 18:02:39
17#
xcymoo 发表于 2022-11-10 17:49
明白您的意思了,这里用快捷键执行后无法撤销,是因为用快捷键执行的时候,options里缺少了cmd,可以自己 ...

好的,加上这个就可以了,感谢感谢!
回复 使用道具 举报
allen-an
注册会员   /  发表于:2022-11-10 17:05:18
15#
xcymoo 发表于 2022-11-10 16:35
执行命令的方式我们不做限制,可以通过我写的按钮执行,也可以别的方式,撤销默认就是Ctrl+z,我demo里也 ...

我已经把这个 command 绑定到我设置的快捷键上了,按快捷键不就等于执行命令吗?
回复 使用道具 举报
allen-an
注册会员   /  发表于:2022-11-10 16:36:17
14#
xcymoo 发表于 2022-11-10 16:12
您的demo都没有执行命令,怎么知道不行呢。可以参考一下这个demo,然后填写几个数字,选中后这几个单元格 ...

按我设置的快捷键填充是撤销不了的,那我点我设置的快捷键执行填充不算执行命令是吗?那我是不是需要写个 keydown 监听事件,在这个里面写执行命令?
回复 使用道具 举报
xcymoo
超级版主   /  发表于:2022-11-10 16:35:57
13#
allen-an 发表于 2022-11-10 16:29
我想通过 ctrl+z 撤销,那这个命令能加到 ctrl+z 上吗?

执行命令的方式我们不做限制,可以通过我写的按钮执行,也可以别的方式,撤销默认就是Ctrl+z,我demo里也是可以ctrl+z撤销的,您试试吧
回复 使用道具 举报
allen-an
注册会员   /  发表于:2022-11-10 16:29:01
12#
xcymoo 发表于 2022-11-10 16:12
您的demo都没有执行命令,怎么知道不行呢。可以参考一下这个demo,然后填写几个数字,选中后这几个单元格 ...

我想通过 ctrl+z 撤销,那这个命令能加到 ctrl+z 上吗?
回复 使用道具 举报
xcymoo
超级版主   /  发表于:2022-11-10 16:12:16
11#
allen-an 发表于 2022-11-10 16:02
按这个试了,还是不行

您的demo都没有执行命令,怎么知道不行呢。可以参考一下这个demo,然后填写几个数字,选中后这几个单元格后,点击左上角的按钮,就可以发现命令被执行了。
要撤销的话,请记得先把焦点聚焦到spreadjs的容器上,然后ctrl+z

自定义命令.zip

1.33 KB, 下载次数: 288

回复 使用道具 举报
allen-an
注册会员   /  发表于:2022-11-10 16:02:03
10#
xcymoo 发表于 2022-11-10 15:48
帮您修改了一下,您看看

按这个试了,还是不行 测试 spread.html.zip (1.47 KB, 下载次数: 281)
回复 使用道具 举报
xcymoo
超级版主   /  发表于:2022-11-10 16:01:31
9#
allen-an 发表于 2022-11-10 15:54
没有太懂这个,意思是执行撤销要自己实现?option 是什么内容?

Commands.undoTransaction会回退事物开始到事物结束的操作,只要写固定的事物开始、结束、回退,就可以了,把业务逻辑写到事物开始和结束的中间,就可以自动撤销了
回复 使用道具 举报
allen-an
注册会员   /  发表于:2022-11-10 15:54:37
8#
xcymoo 发表于 2022-11-10 15:34
execute函数里面,应该有如下部分,您参考一下

没有太懂这个,意思是执行撤销要自己实现?option 是什么内容?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部