Получить TChartSeries в точке XY в TChart - PullRequest
1 голос
/ 27 января 2009

Я использую элемент управления TChart, который поставляется с Delphi 7 и желаю получить Series и Value # строки / строки под указателем мыши.

Мне известно о событии OnClickSeries, которое предоставляет отличную информацию, но Я действительно хочу эту информацию, когда я наведите на серию .

РЕДАКТИРОВАТЬ: Я нашел метод хит-теста на TChart, который работает с любыми типами рядов и несколькими сериями на одном графике, поэтому я опубликовал это и сделал мой принятый ответ. Особая благодарность GameCat за его усилия.

Ответы [ 2 ]

4 голосов
/ 27 января 2009

Вы можете проверить 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 голос
/ 05 февраля 2009

Я наконец нашел этот метод, который работает с несколькими сериями (даже разных типов) в диаграмме.

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

Метод заполняет запись TChartClickedPart, которая содержит следующую подробную информацию о тесте на попадание:

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

Это включает в себя Series и ValueIndex (PointIndex), что именно то, что я хотел.

...