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.

È stato utile?

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top