以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 单元格标色 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=134873) |
-- 作者:blackzhu -- 发布时间:2019/5/11 10:15:00 -- 单元格标色 下面这段代码是有点甜在论坛的例子: If e.Row.IsNull(e.Col.Name) = False Then e.StartDraw() Dim cval As String = e.Row(e.Col.Name) e.text = "" Dim g As Graphics = e.Graphics Dim fnt = New Font("微软雅黑", e.Table.Font.Size) Dim x As Integer = e.x + 1 Dim y As Integer = e.Y + 1 Dim idx As Integer = 0 Do While idx > -1 idx = -1 Dim val As String = "" Dim v = "(未)" Dim i = cval.IndexOf(v) If i > -1 Then If idx = -1 Then idx = i val = v ElseIf i < idx Then idx = i val = v End If End If If idx > -1 Then Dim temp As String = cval.Substring(0, idx) g.DrawString(temp, e.Table.Font, Brushes.Blue, x, y) x += g.MeasureString(temp, e.Table.Font).Width - 3 Output.Show(val) \' g.DrawString(val, fnt, Brushes.Red, x, y) \' x += g.MeasureString(val, fnt).Width - 1 cval = cval.Substring(idx + val.Length) End If Loop cval = cval.Replace("(已)", Nothing) g.DrawString(cval, e.Table.Font, Brushes.Gray, x, y) e.EndDraw() 原先的内容我已经用自动行高全部展示出来.但是这段代码是用画板将原先的内容画出来了的,因为内容超出了单元格的长度,所以画出来的内容跟相邻的单元格内容重叠. 我怎样修改这个代码可以做到跟原先的内容一样,在本单元格显示出来(也就是换行) |
-- 作者:有点蓝 -- 发布时间:2019/5/11 10:36:00 -- g.MeasureString就是用来计算要打印的字符的宽度的 自动行高后,根据列宽计算一下一列能够打印几个字符,然后拆分为多行打印
|
-- 作者:blackzhu -- 发布时间:2019/5/11 12:33:00 -- 这个怎么找不到帮助的? |
-- 作者:blackzhu -- 发布时间:2019/5/11 13:26:00 -- 能否帮我改一个代码? |
-- 作者:有点蓝 -- 发布时间:2019/5/11 13:46:00 -- 上传具体实例测试 |
-- 作者:blackzhu -- 发布时间:2019/5/11 14:26:00 -- 没有办法上传,这个是具体项目,项目非常大. 而且数据都是动态生成的. 我只想你按照这个代码帮我改改 |
-- 作者:有点蓝 -- 发布时间:2019/5/11 14:57:00 -- 新建项目做个类似的例子 |
-- 作者:blackzhu -- 发布时间:2019/5/11 16:15:00 -- 单元格数据是 A(已),B(已),C(未) 我要的格式就是 A 已 需要灰色表示,并清除已标记 B 已 需要灰色表示,并清除已标记 C 未 需要蓝色表示,并清除未标记 |
-- 作者:blackzhu -- 发布时间:2019/5/11 16:16:00 -- 最终结果 A 灰色字 B 灰色字 C 蓝色字
|
-- 作者:blackzhu -- 发布时间:2019/5/11 16:21:00 -- 这个能说明问题,上面的例子数据有点规范的,看这个 |