2013-03-15 9 views
1

단일 Y 축을 가진 TLineSeries 만 사용하는 간단한 차트가 있습니다. 마우스 포인터가 차트 위로 움직이면 어떤 시리즈와도 독립적으로 포인터의 위치와 연관된 X 및 Y 값을 얻고 싶습니다.마우스 포인터 아래에서 X 및 Y 값 가져 오기

MouseMove 이벤트를 처리하고 화면 X와 Y 좌표를 얻을 수 있지만 변환 할 수있는 유일한 방법은 Series-> XValues-> Locate 및 Series-> YValue-> Locate 메서드를 사용하는 것입니다.

두이 문제가 있습니다

- 1의 값을 찾습니다> 시리즈 -> YValue-에서 반환 항상 -1에 관계없이 포인터가 일련의 라인 여부를 초과하는지 여부.

2 - Series-> XValue-> Locate에서 반환 된 값은 포인터가 계열 선을 포함하는 차트의 일부 위에 있지 않으면 -1입니다.

Series-> YValue-> Locate가 항상 -1을 반환하는 이유는 무엇입니까?

더 중요한 것은 포인터가 시리즈 라인이있는 차트의 일부에 있는지 여부에 관계없이 어떻게 값을 얻을 수 있습니까?

Rad Studio XE3과 함께 제공되는 TeeChart 버전을 사용하고 있습니다.

답변

2

왜 시리즈 -> YValue-> 찾기가 항상 -1을 반환합니까?

Locate은 시리즈 값을 사용하고 시리즈의 포인트 인덱스를 반환하기 때문입니다. OnMouseMove는 계열 값이 아닌 화면 픽셀 좌표를 제공합니다.

더 중요한 것은 포인터가 계열 계열의 차트 위에 있는지 여부에 관계없이 값을 얻는 방법은 무엇입니까?

당신은 예를 들어, 대신 시리즈의 참고 자료로 축을 사용할 수 있습니다

procedure TForm2.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, 
    Y: Integer); 
var 
    XVal: double; 
    YVal: double; 
begin 
    XVal:=Chart1.Axes.Bottom.CalcPosPoint(X); 
    YVal:=Chart1.Axes.Left.CalcPosPoint(Y); 

    Chart1.Title.Text[0]:=FormatFloat('#.##', XVal) + ' - ' + FormatFloat('#.##', YVal); 
end; 
관련 문제