找回密码
 立即注册

QQ登录

只需一步,快速开始

max_ff

注册会员

12

主题

52

帖子

162

积分

注册会员

积分
162

[已处理] ctrl+c禁用不生效

max_ff
注册会员   /  发表于:2021-1-25 14:29  /   查看:2499  /  回复:7
spread.commandManager().setShortcutKey(null,67, true, false, false, false); 不生效,仍然可以复制单元格内容

7 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-25 14:39:26
沙发
您好,您可以参考下面的代码
  1. spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.c, true, false, false, false);
  2. spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.v, true, false, false, false);
复制代码
回复 使用道具 举报
max_ff
注册会员   /  发表于:2021-1-25 14:44:38
板凳
DerrickJiao 发表于 2021-1-25 14:39
您好,您可以参考下面的代码

帖子看过了,没发现有区别,都不生效
回复 使用道具 举报
max_ff
注册会员   /  发表于:2021-1-25 14:49:33
地板
DerrickJiao 发表于 2021-1-25 14:39
您好,您可以参考下面的代码

这两行一起使用,只是限制了ctrl+v,并没有限制ctrl+c
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-25 14:49:56
5#
max_ff 发表于 2021-1-25 14:44
帖子看过了,没发现有区别,都不生效

请问您是用macOS还是windows呢?

麻烦您提供一份能复现问题的demo,这边调研一下。
回复 使用道具 举报
max_ff
注册会员   /  发表于:2021-1-25 15:04:04
6#
DerrickJiao 发表于 2021-1-25 14:49
请问您是用macOS还是windows呢?

麻烦您提供一份能复现问题的demo,这边调研一下。

windows系统,需求是只能从外部文件复制内容到sheet,不能从sheet页复制数据到外部文件,支持sheet页内内容复制粘贴

test.rar

924 Bytes, 下载次数: 57

回复 使用道具 举报
max_ff
注册会员   /  发表于:2021-1-25 17:19:53
7#
DerrickJiao 发表于 2021-1-25 14:49
请问您是用macOS还是windows呢?

麻烦您提供一份能复现问题的demo,这边调研一下。

试过用keydown事件禁用ctrl+c可以,spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.c, true, false, false, false); 这个就是不行
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-25 17:43:53
8#
max_ff 发表于 2021-1-25 15:04
windows系统,需求是只能从外部文件复制内容到sheet,不能从sheet页复制数据到外部文件,支持sheet页内内 ...

这边根据您的需求,请用下面的代码重写ctrl+c
  1. var command = {
  2.             canUndo: false,
  3.             execute: function (context, options, isUndo) {
  4.                 var Commands = GC.Spread.Sheets.Commands;
  5.                 if (isUndo) {
  6.                     Commands.undoTransaction(context, options);
  7.                     return true;
  8.                 } else {
  9.                     Commands.startTransaction(context, options);

  10.                     let spread = context;
  11.                     let sheetName = options.sheetName;
  12.                     let command = {};
  13.                     command.cmd = "copy";
  14.                     command.sheetName = sheetName;
  15.                     command.ignoreClipboard = true;

  16.                     command.callback = function () {
  17.                         options.callback(command.copyData.copyText, command.copyData.copyHtml);
  18.                     };

  19.                     spread.commandManager().execute(command);
  20.                
  21.                     Commands.endTransaction(context, options);
  22.                     return true;
  23.                 }
  24.             }
  25.         };
  26.         spread.commandManager().register("myCopy", command);
  27.         spread.commandManager().setShortcutKey("myCopy", GC.Spread.Commands.Key.c, true, false, false, false);
复制代码


用下面的代码重写ctrl+v
  1. var commandV = {
  2.             canUndo: false,
  3.             execute: function (context, options, isUndo) {
  4.                 var Commands = GC.Spread.Sheets.Commands;
  5.                 if (isUndo) {
  6.                     Commands.undoTransaction(context, options);
  7.                     return true;
  8.                 } else {
  9.                     Commands.startTransaction(context, options);

  10.                     let spread = context;
  11.                     let sheetName = options.sheetName;
  12.                     let command = {};
  13.                     command.cmd = "paste";
  14.                     command.sheetName = sheetName;
  15.             
  16.                     spread.commandManager().execute(command);
  17.                
  18.                     Commands.endTransaction(context, options);
  19.                     return true;
  20.                 }
  21.             }
  22.         };
  23.         spread.commandManager().register("myPaste", commandV);
  24.         spread.commandManager().setShortcutKey("myPaste", GC.Spread.Commands.Key.v, true, false, false, false);
复制代码
用以上代码能实现表单内的复制,表单内容无法向外部复制,外部内容可以粘贴在表单。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部