1

Delphi 7 に付属の TChart コントロールを使用しており、マウス ポインタの下にある線/棒の系列と値 #を取得したいと考えています。

優れた情報を提供する OnClickSeries イベントを認識していますが、 series にカーソルを合わせると、この情報が本当に必要になります。

編集: TChart でヒットテスト メソッドを見つけました。これは、1 つのチャート内の任意のシリーズ タイプと複数のシリーズで動作するため、これを投稿して、受け入れられた回答にしました。GameCat の努力に感謝します。

4

2 に答える 2

4

OnChartMouseMove (または 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;

わかりました、悪いことに、バーのコードは異なります (さらに簡単です):

procedure TForm5.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  i : Integer;
begin
  i := Series1.GetCursorValueIndex;
  Memo1.Lines.Add(IntToStr(i));
end;
于 2009-01-27T07:36:32.587 に答える
1

最後に、チャート内の複数のシリーズ (異なるタイプであっても) で機能するこの方法を見つけました。

TChart.CalcClickedPart(Pos: TPoint; Var Part: TChartClickedPart);

このメソッドは、次の詳細なヒット テスト情報を含む TChartClickedPart レコードを埋めます。

TChartClickedPart = record
  Part : TChartClickedPartStyle;
  PointIndex : Integer;
  ASeries : TChartSeries;
  AAxis : TChartAxis;
end;

これには、まさに私が望んでいた Series と ValueIndex (PointIndex) が含まれます。

于 2009-02-05T01:07:03.827 に答える