Получить TChartSeries в точке XY в TChart
Вопрос
я использую Элемент управления TChart, входящий в состав Delphi 7. и желаю получите серию и значение № линии/столбца под указателем мыши.
Мне известно о событии OnClickSeries, которое предоставляет полезную информацию, но Мне очень нужна эта информация, когда я зависать над серией.
РЕДАКТИРОВАТЬ:Я нашел на TChart самый популярный метод, который работает с любыми типами рядов и несколькими рядами на одной диаграмме, поэтому я опубликовал его и сделал его своим принятым ответом.Особая благодарность GameCat за его усилия.
Решение 2
Наконец я нашел этот метод, который работает с несколькими рядами (даже разных типов) на диаграмме.
TChart.CalcClickedPart(Pos: TPoint; Var Part: TChartClickedPart);
Метод заполняет запись TChartClickedPart, которая содержит следующую подробную информацию о проверке попадания:
TChartClickedPart = record
Part : TChartClickedPartStyle;
PointIndex : Integer;
ASeries : TChartSeries;
AAxis : TChartAxis;
end;
Сюда входят Series и ValueIndex (PointIndex), а это именно то, что мне нужно.
Другие советы
Вы можете проверить 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;