Ottieni TChartSeries presso XY Point in TChart
Domanda
Sto usando il controllo TChart fornito con Delphi 7 e desidero ottenere la serie e il valore # della linea / barra sotto il puntatore del mouse.
Sono a conoscenza dell'evento OnClickSeries che fornisce ottime informazioni ma desidero davvero queste informazioni quando passi il mouse su una serie .
EDIT: ho trovato un metodo più impegnativo su TChart che funziona con qualsiasi tipo di serie e serie multiple in un grafico, quindi l'ho pubblicato e l'ho reso la mia risposta accettata. Un ringraziamento speciale a GameCat per i suoi sforzi.
Soluzione 2
Ho finalmente trovato questo metodo che funziona con più serie (anche di diversi tipi) in un grafico.
TChart.CalcClickedPart(Pos: TPoint; Var Part: TChartClickedPart);
Il metodo riempie un record TChartClickedPart che contiene le seguenti informazioni dettagliate sull'hit test:
TChartClickedPart = record
Part : TChartClickedPartStyle;
PointIndex : Integer;
ASeries : TChartSeries;
AAxis : TChartAxis;
end;
Ciò include la serie e ValueIndex (PointIndex) che è esattamente quello che volevo.
Altri suggerimenti
È possibile controllare 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, mia colpa, il codice per le barre è diverso (ancora più semplice):
procedure TForm5.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
i : Integer;
begin
i := Series1.GetCursorValueIndex;
Memo1.Lines.Add(IntToStr(i));
end;