请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

cdy

初级会员

31

主题

78

帖子

293

积分

初级会员

积分
293
cdy
初级会员   /  发表于:2025-3-20 17:05  /   查看:173  /  回复:10
1金币
我们目前有一个保护单元格区域的功能,是通过自定义浮动元素实现的,有dynamicSize属性很方便,

但是会浮动图片似乎不穿透事件,导致筛选按钮,超链接这些操作无法正常出发,请问有办法处理吗
保护区域遮挡问题.png

最佳答案

查看完整内容

您可以在自定义单元格的时候保留原始的绘制逻辑,然后在原始逻辑的基础上新增您的逻辑即可,可以参考以下代码: function LineCellType() {} LineCellType.prototype = new GC.Spread.Sheets.CellTypes.Text(); const oldPaint = GC.Spread.Sheets.CellTypes.Text.prototype.paint; LineCellType.prototype.paint = function ( ctx, value, x, y, w, h, style, options ) { if (!ctx) { re ...

10 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-3-20 17:05:31
来自 8#
您可以在自定义单元格的时候保留原始的绘制逻辑,然后在原始逻辑的基础上新增您的逻辑即可,可以参考以下代码:

function LineCellType() {}
LineCellType.prototype = new GC.Spread.Sheets.CellTypes.Text();
const oldPaint = GC.Spread.Sheets.CellTypes.Text.prototype.paint;
LineCellType.prototype.paint = function (
  ctx,
  value,
  x,
  y,
  w,
  h,
  style,
  options
) {
  if (!ctx) {
    return;
  }
  ctx.save();
  ctx.beginPath();
  ctx.moveTo(x, y);
  ctx.lineTo(x + w, y + h);
  ctx.stroke();
  ctx.font = style.font;
  ctx.restore();
  oldPaint.call(this, ctx, value, x, y, w, h, style, options);
};

var lineCell = new LineCellType();
sheet.getCell(0, 0).cellType(lineCell).value("Hello Wordl1, Hello World2");

image.png823831481.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-3-20 17:52:30
2#
您好,一般来说浮动元素都是直接覆盖在表单上的,不允许鼠标事件向下传递,这也是为什么它被称为浮动元素的原因。

您这边的浮动元素具体是怎样的实现方式?我们这边根据实现方式看一下是否有其他方案能够解决这个问题。
回复 使用道具 举报
cdy
初级会员   /  发表于:2025-3-20 18:01:51
3#
Joestar.Xu 发表于 2025-3-20 17:52
您好,一般来说浮动元素都是直接覆盖在表单上的,不允许鼠标事件向下传递,这也是为什么它被称为浮动元素的 ...

如图:

核心就是const newProtectFloatingElement = new Spread.Sheets.FloatingObjects.FloatingObject(protectUuid, 1, 1, 0, 0 );
添加浮动元素.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-3-21 09:33:06
4#
这边调研了一下,没有什么好的办法,您这边具体是想要实现什么样的需求呢?
回复 使用道具 举报
cdy
初级会员   /  发表于:2025-3-21 09:38:44
5#
Joestar.Xu 发表于 2025-3-21 09:33
这边调研了一下,没有什么好的办法,您这边具体是想要实现什么样的需求呢?

保护部分单元格(设置有阴影 不影响单元格本身样式操作),保护后仅有权限的人才能编辑,无权限的人无法编辑
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-3-21 17:38:51
6#
了解了,最简单的实现方法是使用单元格填充来实现:https://demo.grapecity.com.cn/sp ... /fill-effect/purejs

如果想要不影响单元格样式的话,就只能自行自定义一个新的单元格类型,调用canvas相关的接口手动绘制斜线以实现类似需求。
回复 使用道具 举报
cdy
初级会员   /  发表于:2025-3-24 15:06:04
7#
Joestar.Xu 发表于 2025-3-21 17:38
了解了,最简单的实现方法是使用单元格填充来实现:https://demo.grapecity.com.cn/sp ... /fill-effect/pu ...

自己画线什么的倒还好说,不过好像自定义单元格类型需要重新写单元格的基础功能,请问有没有办法不影响原基础功能呢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-3-28 11:35:59
9#
您好!请教下您的问题解决的怎么样了?
回复 使用道具 举报
cdy
初级会员   /  发表于:2025-3-28 15:30:41
10#
Wilson.Zhang 发表于 2025-3-28 11:35
您好!请教下您的问题解决的怎么样了?

本帖的问题已经可以了,直接修改了GC.Spread.Sheets.CellTypes.Base的paint方法
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部