在鼠标指针下获取X和Y值

时间:2013-03-15 19:53:01

标签: teechart

我有一个简单的图表,只使用带有单个Y轴的TLineSeries。当鼠标指针在图表上移动时,我想得到与指针位置相关的X和Y值,与任何系列无关。

我可以处理MouseMove事件并获取屏幕X和Y坐标,但我发现转换它们的唯一方法是通过Series-> XValues-> Locate和Series-> YValue->找到方法。

这有两个问题:

1 - 无论指针是否在系列行之上,从Series-> YValue-> Locate返回的值始终为-1。

2 - 从Series-> XValue-> Locate返回的值为-1,除非指针位于包含系列行的图表的一部分上。

为什么Series-> YValue-> Locate始终返回-1?

更重要的是,无论指针是否在带有系列线的图表的一部分上,我如何获取值?

我正在使用Rad Studio XE3附带的TeeChart版本。

1 个答案:

答案 0 :(得分:2)

  

为什么Series-> YValue-> Locate始终返回-1?

那是因为Locate使用系列值并返回系列中的点索引。 OnMouseMove提供屏幕像素坐标,而不是系列值。

  

更重要的是,无论是否,我如何获得值   指针是否在图表的一部分上,是否有系列线?

您可以使用轴作为参考而不是系列,例如:

procedure TForm2.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  XVal: double;
  YVal: double;
begin
  XVal:=Chart1.Axes.Bottom.CalcPosPoint(X);
  YVal:=Chart1.Axes.Left.CalcPosPoint(Y);

  Chart1.Title.Text[0]:=FormatFloat('#.##', XVal) + ' - ' + FormatFloat('#.##', YVal);
end;