单击图表时,在光标下获取系列索引

时间:2013-12-25 11:05:15

标签: delphi delphi-xe teechart

单击TChart时如何从光标位置获取系列索引?

谢谢。

2 个答案:

答案 0 :(得分:3)

从您点击的活动中,您将获得X,Y鼠标位置。

var
  SeriesIndex: Integer;
begin
  SeriesIndex := Series1.Clicked(X,Y);
  if (SeriesIndex <> -1) then
  begin
    // Do something with SeriesIndex
  end;
  ...
end;

也可以将OnClickSeries事件分配给图表。

procedure TForm1.Chart1ClickSeries(Sender: TCustomChart;
  Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

答案 1 :(得分:2)

如果系列不在(X,Y)位置(以像素为单位),则系列'Clicked(X,Y)函数返回-1。如果系列位于(X,Y)位置(以像素为单位),则返回系列下点的索引。

这里有一个使用OnMouseMove事件的简单示例:

uses Series;

procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
  Chart1.View3D:=false;

  for i:=0 to 2 do
    Chart1.AddSeries(TBarSeries).FillSampleValues(3);
end;

procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var seriesIndex, valueIndex: Integer;
begin
  Caption:='No series under the mouse';

  for seriesIndex:=Chart1.SeriesCount-1 downto 0 do
  begin
    valueIndex:=Chart1[seriesIndex].Clicked(X,Y);
    if valueIndex>-1 then
      Caption:='Series under the mouse. SeriesIndex: ' + IntToStr(seriesIndex) + ', ValueIndex: ' + IntToStr(valueIndex);
  end;
end;