在TChart的XY Point获取TChartSeries

时间:2009-01-27 06:44:15

标签: delphi charts delphi-7 teechart

我正在使用Delphi 7附带的 TChart控件,希望获取鼠标指针下的行/栏的系列和值#。

我知道OnClickSeries事件提供了很好的信息,但当我悬停系列时,我真的想要这些信息。

编辑:我在TChart上找到了一个最热门的方法,可以在一个图表中使用任何系列类型和多个系列,所以我发布了这个并将其作为我接受的答案。特别感谢GameCat的努力。

2 个答案:

答案 0 :(得分:4)

您可以查看OnChartMouseMove(或OnSeriesMouseMove)

procedure TForm5.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  i : Integer;
begin
  i := Series1.CalcClickedPie(x,y); // i = index of checked data -1 for none
  Memo1.Lines.Add(IntToStr(i));
end;

好吧,我的坏,酒吧代码不同(甚至更容易):

procedure TForm5.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  i : Integer;
begin
  i := Series1.GetCursorValueIndex;
  Memo1.Lines.Add(IntToStr(i));
end;

答案 1 :(得分:1)

我终于找到了这种方法,它可以在图表中使用多个系列(甚至是不同类型)。

TChart.CalcClickedPart(Pos: TPoint; Var Part: TChartClickedPart);

该方法填充TChartClickedPart记录,其中包含以下详细的命中测试信息:

TChartClickedPart = record
  Part : TChartClickedPartStyle;
  PointIndex : Integer;
  ASeries : TChartSeries;
  AAxis : TChartAxis;
end;

这包括Series和ValueIndex(PointIndex),这正是我想要的。