請問如何在form上使滑鼠的滾輪可以作用 |
尚未結案
|
dedo
一般會員 發表:13 回覆:16 積分:5 註冊:2003-11-21 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
借花獻佛一下:
在MainForm放一個TApplicationEvents並在OnMessage事件下寫下面的程式
procedure TMainForm.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var i: SmallInt; begin if Msg.message = WM_MOUSEWHEEL then begin Msg.message := WM_KEYDOWN; Msg.lParam := 0; i := HiWord(Msg.wParam); if i > 0 then Msg.wParam := VK_UP else Msg.wParam := VK_DOWN; Handled := False; end; end;我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
dedo
一般會員 發表:13 回覆:16 積分:5 註冊:2003-11-21 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
Miles的程式意義是在Application收到MouseWheel之message之時改送出keydown/Keyup 之Message來達成Scroll之目的 其實也可以簡單的在Form的OnMouseWheel中
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin Scrollby(0,WheelDelta); end;WheelDelta代表你轉了幾次滾輪, 正負值代表方向(所以在Miles程式中依正負決定要keydown或up) 上面直接呼叫Scrollby(0,WheelDelta), x方向不scroll, y方向依滾輪轉動次數,實際上要Scroll多少可自行調整 若要多些變化, 還可配合Shift, shift代表shift, alt,ctrl等之按鍵組合 |
dedo
一般會員 發表:13 回覆:16 積分:5 註冊:2003-11-21 發送簡訊給我 |
首先,謝謝william、Miles、ccchen 等的指教,
因為Miles的方法我看不太懂,試了一下好像也不行(可能是因為我不知TApplicationEvents在哪),
所以我用ccchen的方法再試了一下,的確是可以用滾輪了,但是功能不夠完整,所以會怪怪的,比如 Scrollby(0,WheelDelta); 不論其中的 WheelDelta 放正數或負數,捲動滾輪不是只能一直往上捲,就是只能一直往下捲,而且並不會因為Form 的內容沒了而停下來,會一直捲一直捲
我試了一些方法想讓它正常點也沒用.. 最後我用 >
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |