找回密码
 立即注册

QQ登录

只需一步,快速开始

Coco_

注册会员

16

主题

41

帖子

149

积分

注册会员

积分
149
Coco_
注册会员   /  发表于:2024-5-23 15:13  /   查看:1965  /  回复:6
100金币
本帖最后由 Joestar.Xu 于 2024-5-27 08:52 编辑


调研编号:SJS-24446

自定义单元格类型,将指定范围的单元格的鼠标设置为手型。设定之后不能拖动鼠标,选择范围选择设定为手型的单元格。在其他类型的单元格开始拖动可以选择,但是从自定义的单元格类型开始就不可以, 自定义单元格代码如下。
function PointerCursorCellType() {
   this.typeName="PointerCursorCellType"
}
PointerCursorCellType.prototype = new spreadNS.CellTypes.Base();
PointerCursorCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
   spreadNS.CellTypes.Base.prototype.paint.apply(this, [ctx, value, x, y, w, h, style, options]);
};
PointerCursorCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
   let info = { x: x, y: y, row: context.row, col: context.col, cellRect: cellRect, sheetArea: context.sheetArea };
   info.isReservedLocation = true;
   return info;
};
PointerCursorCellType.prototype.processMouseMove = function (hitInfo) {
   var sheet = hitInfo.sheet;
   var div = sheet.getParent().getHost();
   var canvasId = div.id + "vp_vp";
   var canvas = $("#"+canvasId)[0];
   canvas.style.cursor='pointer';
   return true;
};
测试过将isReservedLocation 设置为 false就可以拖动,但是手型消失了。请问如何在设置为手型光标的情况下,可以范围拖动选择单元格

最佳答案

查看完整内容

您好,经调研, 在工作表处理鼠标事件时,会执行hit-testing操作,在这期间,工作表会和单元格确认是否要自行处理点击事件而停止工作表的行为。 当单元格的isReservedLocation为true时,就会如上所述,停止工作表级别的行为。 而选择行为则属于工作表级别的行为,isReservedLocation为true时就会将这种行为停止。 您可以考虑一些其他的实现方式,比如使用一些图标或者修改单元格的颜色来标记特殊的单元格。(https://d ...

6 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-29 17:30:56
7#
好的,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
Coco_
注册会员   /  发表于:2024-5-29 12:10:36
6#
谢谢解答,已经在业务上把这个手型标的需求去掉了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-24 10:09:53
4#
了解您这边的需求了,这边调研一下,后续有进展我会在本帖中回复您。
回复 使用道具 举报
Coco_
注册会员   /  发表于:2024-5-24 09:50:40
3#
自定义单元格有特殊的业务,用户双击之后有逻辑处理。所以需要一个手型光标提示这个单元格是有其他业务的
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-23 17:41:35
2#
您好,您描述的情况我这边理解了,为了更好地解决您的问题,我想知道您现在的使用场景是什么,为什么需要这么一个自定义单元格呢?
回复 使用道具 举报
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-23 15:13:04
来自 5#
您好,经调研,

在工作表处理鼠标事件时,会执行hit-testing操作,在这期间,工作表会和单元格确认是否要自行处理点击事件而停止工作表的行为。

当单元格的isReservedLocation为true时,就会如上所述,停止工作表级别的行为。

而选择行为则属于工作表级别的行为,isReservedLocation为true时就会将这种行为停止。

您可以考虑一些其他的实现方式,比如使用一些图标或者修改单元格的颜色来标记特殊的单元格。(https://demo.grapecity.com.cn/sp ... ion-icons#timestamp

也可以使用单元格状态来实现。(https://demo.grapecity.com.cn/sp ... introduction/purejs

当然,如果您仍选择使用最开始的方案来实现这个需求,您可以捕获工作表Canvas的鼠标移动事件,自行开发代码测试单元格的位置并根据位置修改光标。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部