Obtenga TChartSeries en XY Point en TChart
Pregunta
Estoy usando el control TChart que viene con Delphi 7 y deseo obtener el número de serie y valor de la línea / barra debajo del puntero del mouse.
Soy consciente del evento OnClickSeries que proporciona una gran información, pero realmente quiero esta información cuando desplazo el cursor sobre una serie .
EDITAR: Encontré un método de prueba exitosa en TChart que funciona con cualquier tipo de serie y serie múltiple en un gráfico, así que publiqué esto y lo convertí en mi respuesta aceptada. Un agradecimiento especial a GameCat por su esfuerzo.
Solución 2
Finalmente encontré este método que funciona con múltiples series (incluso de diferentes tipos) en un gráfico.
TChart.CalcClickedPart(Pos: TPoint; Var Part: TChartClickedPart);
El método llena un registro TChartClickedPart que contiene la siguiente información detallada de prueba de impacto:
TChartClickedPart = record
Part : TChartClickedPartStyle;
PointIndex : Integer;
ASeries : TChartSeries;
AAxis : TChartAxis;
end;
Esto incluye la Serie y el ValueIndex (PointIndex), que es exactamente lo que quería.
Otros consejos
Puede verificar OnChartMouseMove (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, está mal, el código para las barras es diferente (aún más 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;