Tchart(Tseries) 圖上點 顯示的問題 |
尚未結案
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
如上圖所示
圖上紅圈所示,使用者點到 線一樣會顯示數據
我如何讓使用者 只有在 點的附近範圍才顯示 數據
以下是我的程式碼
procedure TFrm_Chart.Chart_UpMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin inherited; AValueIndex:=Series_Up.GetCursorValueIndex; if (Chart_Up.Series[0].Count = 0) or (Chart_Up.Series[0].Count = 0) then //無資料顯示時不處理 Exit; if Not PtInRect(TChart(Sender).ChartRect, Point(X, Y)) then Exit; //滑鼠不落在 Chart 邊界內不考慮 if AValueIndex>-1 then begin lbl_CtPointValue.Visible:=True; lbl_CtPointValue.Top :=Y+5;//+20; lbl_CtPointValue.Left :=X-20;//-30; lbl_CtPointValue.Caption :=FloatToStr(Series_Up.YValue[AValueIndex])+' '; end else lbl_CtPointValue.Visible:=False; END; |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi seedbcc, 試試這樣作,看看可不可行
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var AValueIndex : Integer; ValX,ValY : Integer; begin Memo1.Lines.Clear; AValueIndex := Series1.GetCursorValueIndex; IF AValueIndex > -1 THEN BEGIN ValX := Series1.CalcXPosValue(Series1.XValue[AValueIndex]); ValY := Series1.CalcYPosValue(Series1.YValue[AValueIndex]); If (Abs(ValX - X) <= Series1.Pointer.HorizSize) and (Abs(ValY - Y) <= Series1.Pointer.VertSize) then Edit1.Text := '(' FloatToStr(Series1.XValue[AValueIndex]) ',' FloatToStr(Series1.YValue[AValueIndex]) ')'; END ELSE BEGIN Edit1.Text := ''; END; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |