全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1829
推到 Plurk!
推到 Facebook!

如何取得可視元件內滑鼠的座標

答題得分者是:pceyes
alvin26
初階會員


發表:24
回覆:41
積分:28
註冊:2005-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-25 11:24:30 IP:61.63.xxx.xxx 訂閱
請問各位大大,

我想自已練習一個簡單的畫圖程式,
只是單純的畫線、圓、矩形,
有點像小畫家畫線、圓那樣,
元件我只想到 TImage 可以畫線,
但我抓不到滑鼠的游標的座標,
我曾試著用 GetCursorPos 來做,
X座標我可以算得出來,
但 Y 座標抓不準,因為下面的開始功能表和
Form 的標題列高度我不會抓。
請問一下,有哪個元件可以有自已的 X, Y 屬性可以使用呢?
這樣比較方便。
如果沒有,可否指點我,開始功能表的高度,和 FORM 的標題列高度要怎麼抓呢?
謝謝。
------
弟子規,聖人訓,首孝悌,次謹信,泛愛眾,而親仁,有餘力,則學文。
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-26 09:36:52 IP:122.118.xxx.xxx 訂閱

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
var
m, f: Integer;
begin
m := Screen.Height - Screen.WorkAreaHeight;
f := form1.Height - form1.ClientHeight;
Showmessage(Format('開始功能表高度: %d 。FORM 的標題列高度 %d', [m,f]));
end;

[/code]
------
努力會更接近成功
alvin26
初階會員


發表:24
回覆:41
積分:28
註冊:2005-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-26 09:52:43 IP:61.63.xxx.xxx 訂閱
原來這麼簡單,
感謝 pceyes 大大~
------
弟子規,聖人訓,首孝悌,次謹信,泛愛眾,而親仁,有餘力,則學文。
roviury
一般會員


發表:3
回覆:49
積分:15
註冊:2008-08-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-18 12:34:09 IP:203.186.xxx.xxx 訂閱
上樓只是回應了
如果沒有,可否指點我,開始功能表的高度,和 FORM 的標題列高度要怎麼抓呢?
ps. Screen=全螢幕, WorkAreaHeight=沒有開始功能表(應該需要explorer運行), ClientHeight=內部

另外,你可以用 timage.on mousemove 來得到x,y 然後再加上這個timage的left和top 就可以得到準確的座標 (不需要用任何額外的api)

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label1.caption:=
Format('相對座標(%d,%d),絕對座標(%d,%d)', [X,Y,image1.left X,image1.top Y]);
end;
編輯記錄
roviury 重新編輯於 2009-04-18 12:41:42, 註解 無‧
roviury 重新編輯於 2009-04-18 12:42:07, 註解 無‧
roviury 重新編輯於 2009-04-18 12:42:20, 註解 無‧
系統時間:2017-12-15 16:21:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!