Obter TChartSeries em XY Point em TChart
Pergunta
Eu estou usando o controle TChart que vem com o Delphi 7 e desejo de obter o Series e Valor # da linha / bar sob o ponteiro do mouse.
Estou ciente do evento OnClickSeries que fornece grande informação, mas eu realmente quero esta informação quando eu pairar sobre uma série .
EDIT: Eu encontrei um método hittest em TChart que trabalha com quaisquer tipos de séries e várias séries em um gráfico para que eu postei isso e fiz a minha resposta aceita. Agradecimentos especiais para GameCat para seu esforço.
Solução 2
Eu finalmente encontrei este método que trabalha com múltiplas séries (mesmo de tipos diferentes) em um gráfico.
TChart.CalcClickedPart(Pos: TPoint; Var Part: TChartClickedPart);
O método preenche um registro TChartClickedPart que contém as seguintes informações detalhadas de teste de impacto:
TChartClickedPart = record
Part : TChartClickedPartStyle;
PointIndex : Integer;
ASeries : TChartSeries;
AAxis : TChartAxis;
end;
Isto inclui as séries e os ValueIndex (PointIndex), que é exatamente o que eu queria.
Outras dicas
Você pode verificar o OnChartMouseMove (ou o 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;
Ok, meu mau, o código para bares é diferente (ainda mais fácil):
procedure TForm5.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
i : Integer;
begin
i := Series1.GetCursorValueIndex;
Memo1.Lines.Add(IntToStr(i));
end;