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.

Foi útil?

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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top