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

QQ登录

只需一步,快速开始

qq707820685

初级会员

32

主题

138

帖子

388

积分

初级会员

积分
388
qq707820685
初级会员   /  发表于:2018-6-19 15:15  /   查看:3959  /  回复:8
本帖最后由 qq707820685 于 2018-6-20 14:24 编辑

自定义单元格,单元格文本超出单元格列宽时,文本显示到下一个单元格去了,应该是paint方法的bug?
图片.png466116637.png
这个是问题demo,如果是控件的Bug的话,希望能帮忙解决一下,并发一个修复版本给我们用,谢谢




paintDemo.rar

2.18 MB, 下载次数: 102

demo

8 个回复

倒序浏览
Helen
高级会员   /  发表于:2018-6-19 16:07:07
沙发
这是设计,不是bug,请参考Excel同样的行为。
参考设置allowCellOverflow:
http://help.grapecity.com/spread/SpreadSheets11/webframe.html#celloverflow.html
回复 使用道具 举报
qq707820685
初级会员   /  发表于:2018-6-19 16:33:36
板凳
Helen 发表于 2018-6-19 16:07
这是设计,不是bug,请参考Excel同样的行为。
参考设置allowCellOverflow:
http://help.grapecity.com/sp ...

设置cellOverflow true/false无效,参考demo
回复 使用道具 举报
qq707820685
初级会员   /  发表于:2018-6-19 16:45:38
地板
本帖最后由 qq707820685 于 2018-6-19 16:50 编辑

更新demo:设置了单元格的style后,就不会出现这个问题了,原因不清楚,但是不可能去重复设置Style来解决这个问题
回复 使用道具 举报
Helen
高级会员   /  发表于:2018-6-19 16:49:18
5#
qq707820685 发表于 2018-6-19 16:45
更新demo:设置了单元格的style后,就不会出现这个问题了

已经解决了,那本贴结贴。
回复 使用道具 举报
qq707820685
初级会员   /  发表于:2018-6-19 16:53:42
6#
本帖最后由 qq707820685 于 2018-6-19 16:54 编辑
Helen 发表于 2018-6-19 16:49
已经解决了,那本贴结贴。

不可能去重复设置一个无用的style来解决这个问题吧?我只是说发现了设置style就解决了这个问题,这只是碰巧,这不应该是解决这个问题的方案吧?...
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-6-20 11:38:57
7#
这个是您绘制paint方法中计算的错误,自定义单元格级别paint方法是直接调用底层canvas去绘制的,是完全按照您的设置来绘制,您设置的X坐标是这样的,所以绘制肯定会超出。您修改为:
demoCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
            ctx.save();
            ctx.beginPath();
            ctx.moveTo(x, y + h/2);
            ctx.lineTo(x + fixedWidth + indent - 50, y + h/2);
            ctx.stroke();
            ctx.restore();
            // Draw Text
            arguments[2] = x + fixedWidth + indent - 50;
            arguments[4] =  w - fixedWidth - indent + 50 ;
            GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
        };
另外您说的设置无用style的问题是这样的,您设置的style中style.backColor = 'White';这就导致后面绘制的时候白背景会覆盖之前的超出部分,导致解决问题的错觉。
综上所述,这个问题不是产品BUG导致,设计上就是自定义单元格的ctx是底层canvas画法去绘制,您用上面修改的方式应该没有问题了。
回复 使用道具 举报
qq707820685
初级会员   /  发表于:2018-6-20 11:57:49
8#
ClarkPan 发表于 2018-6-20 11:38
这个是您绘制paint方法中计算的错误,自定义单元格级别paint方法是直接调用底层canvas去绘制的,是完全按照 ...

谢谢!这才是我想要的答案
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-6-20 13:45:50
9#
不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部