線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4060
推到 Plurk!
推到 Facebook!

请教Teechart中如何实现跟随光标移动的label?

答題得分者是:harpist
C.W
一般會員


發表:1
回覆:3
積分:0
註冊:2009-01-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-23 16:46:49 IP:119.123.xxx.xxx 訂閱
请教Teechart中如何实现跟随光标移动的label?

我的意思是当鼠标进入Tchart时,在BottomAxis 和LeftAxis 分别上显示一个移动的Label.

我现在的的做法是在Tchart上放置一个label,然后把光标对应的坐标值赋予该label.caption
如下:
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var x1,y1:integer;xv,yv:double;
begin
x1:=chart1.GetCursorPos.X;
y1:=chart1.GetCursorpos.y;
xv:=chart1.BottomAxis.CalcPosPoint(x1);
yv:=chart1.LeftAxis.CalcPosPoint(y1);
label16.Caption:='(' format('%7.2f',[xv]) ':' format('%7.2f',[yv]) ' )';
end;


但是我需要的效果是希望如下图所示

C.W
一般會員


發表:1
回覆:3
積分:0
註冊:2009-01-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-23 16:48:54 IP:119.123.xxx.xxx 訂閱
请大家指点思路,谢谢!
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-02-23 17:22:24 IP:59.120.xxx.xxx 未訂閱
你要不要考慮用Chart1->Canvas->TextOutA(X,Y,TEXT)
------
~§~迷時師渡,悟了自渡~§~
C.W
一般會員


發表:1
回覆:3
積分:0
註冊:2009-01-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-23 21:18:31 IP:113.88.xxx.xxx 訂閱

===================引 用 harpist 文 章===================
你要不要考慮用Chart1->Canvas->TextOutA(X,Y,TEXT)

谢谢!

这个方法是在指定的x,y 坐标点处输出TEXT,

而我要的是在bottomAxis 和LeftAxis 跟随光标输出label

/
PS:为什么不能直接显示本地Load的图片呢?我在1楼loadup的图片不能直接显示.



harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-02-24 10:31:47 IP:59.120.xxx.xxx 未訂閱
你真的有試嗎?我這樣做並沒有問題。
X,Y的位置是你可以控制的,控制在你要顯示的位置就可以達到你要的效果。

Label 一樣是在Chart1MouseMove 事件裡面指定位置就可以了。
記得畫之前先呼叫一下 Chart1 的 Repaint()

===================引 用 C.W 文 章===================

===================引 用 harpist 文 章===================
你要不要考慮用Chart1->Canvas->TextOutA(X,Y,TEXT)

謝謝!

這個方法是在指定的x,y 坐標點處輸出TEXT,

而我要的是在bottomAxis 和LeftAxis 跟隨光標輸出label

/
PS:為什麼不能直接顯示本地Load的圖片呢?我在1樓loadup的圖片不能直接顯示.


------
~§~迷時師渡,悟了自渡~§~
C.W
一般會員


發表:1
回覆:3
積分:0
註冊:2009-01-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-02-24 13:27:37 IP:119.136.xxx.xxx 訂閱

===================引 用 harpist 文 章===================
你真的有試嗎?我這樣做並沒有問題。
X,Y的位置是你可以控制的,控制在你要顯示的位置就可以達到你要的效果。

Label 一樣是在Chart1MouseMove 事件裡面指定位置就可以了。
記得畫之前先呼叫一下 Chart1 的 Repaint()

===================引 用 C.W 文 章===================

===================引 用 harpist 文 章===================
你要不要考慮用Chart1->Canvas->TextOutA(X,Y,TEXT)

謝謝!

這個方法是在指定的x,y 坐標點處輸出TEXT,

而我要的是在bottomAxis 和LeftAxis 跟隨光標輸出label

/
PS:為什麼不能直接顯示本地Load的圖片呢?我在1樓loadup的圖片不能直接顯示.


非常感谢! 按照您的方法可以了.
我昨天试了,没有成功是因为没有编入下面2条语句
x2:=chart1.BottomAxis.PosAxis;
y2:=chart1.LeftAxis.PosAxis;


源码如下

procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var x1,y1,x2,y2:integer;xv,yv:double;
begin
x1:=chart1.GetCursorPos.X;
y1:=chart1.GetCursorpos.y;
xv:=chart1.BottomAxis.CalcPosPoint(x1);
yv:=chart1.LeftAxis.CalcPosPoint(y1);
x2:=chart1.BottomAxis.PosAxis;
y2:=chart1.LeftAxis.PosAxis;
chart1.Repaint;
chart1.Canvas.TextOut(y2,y1,format('%7.2f',[yv]));
chart1.Canvas.TextOut(x1,x2,format('%7.2f',[xv]));
end;



结案了!!
系統時間:2017-10-22 17:56:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!