1

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

我知道 OnClickSeries 事件提供了很好的信息,但是当我将鼠标悬停在一个系列上时我真的想要这些信息

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

4

2 回答 2

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;
于 2009-01-27T07:36:32.587 回答
1

我终于发现这种方法适用于图表中的多个系列(甚至不同类型)。

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

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

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

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

于 2009-02-05T01:07:03.827 回答