如何取得可視元件內滑鼠的座標 |
答題得分者是:pceyes
|
alvin26
初階會員 發表:24 回覆:41 積分:28 註冊:2005-04-12 發送簡訊給我 |
請問各位大大,
我想自已練習一個簡單的畫圖程式, 只是單純的畫線、圓、矩形, 有點像小畫家畫線、圓那樣, 元件我只想到 TImage 可以畫線, 但我抓不到滑鼠的游標的座標, 我曾試著用 GetCursorPos 來做, X座標我可以算得出來, 但 Y 座標抓不準,因為下面的開始功能表和 Form 的標題列高度我不會抓。 請問一下,有哪個元件可以有自已的 X, Y 屬性可以使用呢? 這樣比較方便。 如果沒有,可否指點我,開始功能表的高度,和 FORM 的標題列高度要怎麼抓呢? 謝謝。
------
弟子規,聖人訓,首孝悌,次謹信,泛愛眾,而親仁,有餘力,則學文。 |
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
[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 發送簡訊給我 |
|
roviury
一般會員 發表:3 回覆:49 積分:15 註冊:2008-08-28 發送簡訊給我 |
上樓只是回應了
如果沒有,可否指點我,開始功能表的高度,和 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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |