TeeChart On Mouse在一系列显示中,用户定义Image

时间:2014-08-28 11:05:11

标签: activex teechart

我的要求是,当用户在图表中的条形图上执行鼠标操作时,我想显示一个图像框。目前在鼠标中我们正在显示标签,百分比等文本,我们也可以显示图像。

由于 阿克沙伊

1 个答案:

答案 0 :(得分:0)

您可以使用隐藏的矩形工具显示所需的图像,并使用提供的事件更改其可见性,位置或加载的图像。
即,使用OnMouseEnterSeries / OnMouseLeaveSeries,但OnMouseMove事件也可以这样做:

Private Sub Form_Load()
  TChart1.Aspect.View3D = False

  TChart1.AddSeries scBar
  TChart1.Series(0).FillSampleValues

  TChart1.Tools.Add tcMarksTip

  TChart1.Tools.Add tcRectangle
  TChart1.Tools.Items(1).Active = False
  TChart1.Tools.Items(1).asRectangle.AllowDrag = False
  TChart1.Tools.Items(1).asRectangle.AllowResize = False
  TChart1.Tools.Items(1).asRectangle.Shape.Transparency = 0
End Sub

Private Sub TChart1_OnMouseEnterSeries(ByVal SeriesIndex As Long)
  ValueIndex = TChart1.Series(SeriesIndex).Clicked(TChart1.MousePosition.X, TChart1.MousePosition.Y)
  If ValueIndex = 2 Then
    TChart1.Tools.Items(1).Active = True
    TChart1.Tools.Items(1).asRectangle.Shape.Picture.LoadImage "C:\tmp\ImageForValueIndex2.png"
    TChart1.Tools.Items(1).asRectangle.Left = TChart1.MousePosition.X
    TChart1.Tools.Items(1).asRectangle.Top = TChart1.MousePosition.Y
  End If
End Sub

Private Sub TChart1_OnMouseLeaveSeries(ByVal SeriesIndex As Long)
  TChart1.Tools.Items(1).Active = False
End Sub

修改

正如comment below中所注意到的,TeeChart VCL v2014.11引入了SystemHints属性,如here所述:

  

MarksTip工具新属性SystemHints(在VCL中布尔默认为True,   Firemonkey中的错误)。当为False时,使用普通的TeeShape对象   绘制tiptool而不是使用VCL系统机制。

ChartTool3.SystemHints := False;
ChartTool3.Format.Font.Size:=14;
     

与系统提示相比,唯一的不利因素是形状不可能   显示在图表边界之外。

     

当SystemHints为False时,新的Format属性(类型为TTeeShape)   包含所有格式属性(画笔,笔,字体等)   显示提示。

由于TeeChart ActiveX是TeeChart VCL的包装器,因此您可以使用TeeChart ActiveX v2014.0.0.1中的这一新功能。
因此,如果要使用TeeShape属性,则必须牢记将SystemHints设置为False。这是一个简单的例子:

Private Sub Form_Load()
  TChart1.Aspect.View3D = False

  TChart1.AddSeries scBar
  TChart1.Series(0).FillSampleValues

  TChart1.Tools.Add tcMarksTip
  TChart1.Tools.Items(0).asMarksTip.Format.Picture.LoadImage "C:\tmp\ImageForAllValues.jpg"
  TChart1.Tools.Items(0).asMarksTip.SystemHints = False
End Sub