DrawCell
在绘制单元格的时候执行,主要用于标记数据。
e参数属性:
Table: 准备绘制的表
Row: 准备绘制的行
Col: 准备绘制的列
Style: 指定自定义样式的名称,如果用默认的样式绘制单元格,无须设置Style属性。
Text: 字符型,获得或者设置要绘制的文本内容
Chart: 单元格图表
DrawChart:绘制单元格图表,参考:单元格图表 添加图表数据
使用线状图 使用柱状图
使用胜负图 几个示例 图表属性设置
单元格图表交互
因为DrawCell事件执行非常频繁,所以代码必须简洁,不可以有太耗时的复杂代码,也不能有显示对话框的代码,否则会出现死循环,切记切记。
示例一
然后增加两个样式,分别是优秀和不及格,前者的背景颜色设为绿色,后者的背景颜色设为红色。
最后在DrawCell事件中设置如下代码:
'如果是数值型列,且不是总分列
现在程序将用不同的背景颜色,分别标出优秀和不及格的分数:
示例二
有的时候,不是标记一个单元格,而是希望整行用不同的颜色标记出来,那么代码更加简单。
例如希望总分低于360分的行,用红底白字标出,只需首先增加一个名为“不及格”的样式,将其设置为红底白字,然后将DrawCell事件代码设置为:
If
e.Row("总分") < 360 Then示例三
DrawCell事件不仅用于标记数据,还可以用他“篡改”数据。
假定有一名为“密码”的列,要求只有经理级别的用户才能查看该列的数据,其他人查看的时候,看到的只是"****"。
实现的代码也非常简单,在该表的DrawCell事件中输入:
If
User.Group = "经理" Then '如果是经理DrawCell事件只是影响显示内容,并不会对真实的值有任何影响。
示例四
汇总模式先的分组行同样会触发DrawCell事件,这一点和常规的表事件有所不同。
例如在汇总模式下,对于数量小计超出一定值的汇总结果进行标记:
If
e.Row.IsGroup
AndAlso e.Col.Name
= "数量" Then
'如果是分组行的数量列
If e.Row.Level
= 0 Then
'如果是1级分组
If
e.Row("数量")
> 5000 Then
e.Style
= "样式1"
End
If
ElseIf
e.Row.Level
= 1 Then
'如果是二级分组
If
e.Row("数量")
> 1000 Then
e.Style
= "样式2"
End
If
End If
End
If
示例五
DrawCell事件使用自定义样式来标记单元格。
每个DataTable都有Styles集合,用于获得指定名称的自定义样式,例如:
DataTables("成绩表").Styles("不及格")
表示成绩表的不及格样式。
样式包括以下属性:
BackColor: 背景颜色
ForeColor: 字体颜色
FontBold: 逻辑型,设为True,字体加粗
FontItalic:逻辑型,设为True,字体倾斜
FontStrikeout:逻辑型,设为True,字体带删除线
FontUnderline:逻辑型,设为True,字体带下划线
例如对于不及格的成绩,不仅要求用红色标记出来,而且希望能够不停地闪烁,实现的步骤为:
1、增加一个名为“不及格”的自定义样式,样式的背景颜色设为红色。
2、将DrawCell事件的代码设为:
'如果是数值型列,且不是总分列
With DataTables(
"成绩表").Styles("不及格")