Bonjour,
Sur mon graphe j'ai donc une courbe TLineSeries sur laquelle sont positionnés des points (TPointSeries).
Je voudrais qu'en bougeant ces points à la souris leurs coordonnées suivent celles de la courbe ! Puisqu'un exemple vaut toujours mieux que maints discours : comme ceci (survolez le graphe à la souris).
Alors rien de plus simple pour le X :
1 2 3 4
| procedure TfrmMain.ChartMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SeriesPoints.XValues[iIndexDuPoint] := SeriesLine.XScreenToValue(X);
end; |
...mais pour l'ordonnée ça se complique : il faut trouver le Y correspondant au X dans le vecteur YValues de SeriesLine, autrement dit connaitre l'index du point X dans XValues et récupérer la valeur correspondante dans YValues.
Ce qui donnerait ça :
SeriesPoints.YValues[iIndexDuPoint] := SeriesLine.YValues[index_du_X];
Mais je n'arrive pas à récupérer cet index même si la méthode Locate est prévue pour ça :
index_du_X := SeriesLine.XValues.Locate(SeriesLine.XScreenToValue(X));
Tout simplement parce que mes valeurs sont de l'ordre de e10-5 (le pas entre 2 points est aux alentours de 2,5.10-5) et qu'un Locate(0,006574123), forcément, ne donne rien.
Des idées svp ?
Partager