2009-01-27 18 views
1

我使用的是Delphi 7自帶的TChart控件並希望獲得鼠標指針下的線條/條的系列和值#。在TChart的XY點獲取TChartSeries

我知道OnClickSeries事件,這提供了巨大的信息,但我真的希望這個信息時,我懸停在一系列的。

編輯:我發現了TChart上的一個hittest方法,它可以與任何系列類型和多個系列在一個圖表中一起使用,所以我發佈了這個並使其成爲我接受的答案。特別感謝GameCat的努力。

回答

1

我終於找到了這個方法,與圖表中的多個系列(甚至不同類型)一起工作。

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

的方法填充其中包含以下詳細的命中測試信息的TChartClickedPart記錄:

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

這包括系列和ValueIndex(PointIndex)這正是我想要的。

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; 
+0

謝謝。雖然我真的在獲得棒/折線圖中某個點的系列/值之後。 – CodeAndCats 2009-02-02 00:46:28