我使用的是Delphi 7自帶的TChart控件並希望獲得鼠標指針下的線條/條的系列和值#。在TChart的XY點獲取TChartSeries
我知道OnClickSeries事件,這提供了巨大的信息,但我真的希望這個信息時,我懸停在一系列的。
編輯:我發現了TChart上的一個hittest方法,它可以與任何系列類型和多個系列在一個圖表中一起使用,所以我發佈了這個並使其成爲我接受的答案。特別感謝GameCat的努力。
我使用的是Delphi 7自帶的TChart控件並希望獲得鼠標指針下的線條/條的系列和值#。在TChart的XY點獲取TChartSeries
我知道OnClickSeries事件,這提供了巨大的信息,但我真的希望這個信息時,我懸停在一系列的。
編輯:我發現了TChart上的一個hittest方法,它可以與任何系列類型和多個系列在一個圖表中一起使用,所以我發佈了這個並使其成爲我接受的答案。特別感謝GameCat的努力。
我終於找到了這個方法,與圖表中的多個系列(甚至不同類型)一起工作。
TChart.CalcClickedPart(Pos: TPoint; Var Part: TChartClickedPart);
的方法填充其中包含以下詳細的命中測試信息的TChartClickedPart記錄:
TChartClickedPart = record
Part : TChartClickedPartStyle;
PointIndex : Integer;
ASeries : TChartSeries;
AAxis : TChartAxis;
end;
這包括系列和ValueIndex(PointIndex)這正是我想要的。
您可以檢查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;
謝謝。雖然我真的在獲得棒/折線圖中某個點的系列/值之後。 – CodeAndCats 2009-02-02 00:46:28