可交互的单元格图表

本节内容可以参考CaseStudy目录下的文件:单元格图表.Table

我们可以让单元格图表活起来,让其对用户的操作做出响应。

要设计可交互的图表,需要用到Table的两个成员,分别是:

MouseChartIndex

这是一个整数型属性,可以返回鼠标所在位置的图表区域序号,例如当用鼠标单击单元格图表中的某个图柱时,可以通过此属性知道单击的是第几个图柱。

MouseHoverCell

这是一个事件,当鼠标进入或退出悬停状态时执行(所谓悬停,就是鼠标停在某个位置不动),此事件的e参数有个属性Hovering,进入悬停转态时,此属性返回True,退出悬停状态时,此属性返回False。

示例四

假定要生成下图所示的柱状图,要求:

1、鼠标悬停在某个图柱时,能显示该图柱的数值以及对应的月份。

2、双击某个图柱时,能跳转到对应的列。

过程很简单,步骤:

1、DrawCell事件写入如下代码,用于生成图表:

If e.Col.Name = "走势" Then
    Dim cns() As String = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}
   
For Each cn As String  In cns
        e.Chart.AddValues(e.Row(cn))
    Next
    e.Chart.ChartType = 1
    e.Chart.SeriesColor = Color.CadetBlue
    e.Chart.ShowHigh = True
    e.Chart.HighMarkerColor = Color.Orange
   
e.DrawChart()
End
If

2、MouseHoverCell事件写入如下代码,用于当鼠标悬停在某个图柱时,显示该图柱的数值和对应的月份:

If e.Col.Name = "走势" Then
    If e.Hovering Then '如果是进入悬停状态,,则显示信息
        Dim cns() As String =   {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}
        Dim idx As Integer = e.Table.MouseChartIndex '获取鼠标位置的图柱序号
        If idx >= 0 Then
            Dim cn As String = cns(idx)
            e.Table.ShowToolTip(e.Row(cn) & "(" & cn & ")",e.Row,e.Col)
        End If
    Else '如果是退出悬停状态,则隐藏信息
        e.Table.HideToolTip()
    End
If

End
If

3、最后在DoubleClick事件写入代码,用于双击图柱跳转到对应的列:

If e.Col.Name = "走势" Then
    e.Cancel = True
    Dim cns() As String =   {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}
    Dim idx As Integer = e.Table.MouseChartIndex '获取鼠标位置的图柱序号
    If idx >= 0 Then
        Dim cn As String = cns(idx)
       
e.Table.Select(e.Table.RowSele.Table.Cols(cn).Index)
   
End If
End
If


本页地址:http://www.foxtable.com/webhelp/topics/3751.htm