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

請問如何在form上使滑鼠的滾輪可以作用

尚未結案
dedo
一般會員


發表:13
回覆:16
積分:5
註冊:2003-11-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-26 23:52:17 IP:61.216.xxx.xxx 未訂閱
各位大大:    我在 MDI裡的各個child Form 內容幾乎都蠻長的,所以右邊會有捲軸出現可以往下拉....可是用滑鼠的滾輪來捲就沒有作用...這有方法可以解決嗎 ?    多謝指教了 
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-27 09:36:11 IP:147.8.xxx.xxx 未訂閱
Form events: OnMouseWheel, OnMouseWheelDown, OnMouseWheelUp
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-27 14:25:35 IP:218.160.xxx.xxx 未訂閱
借花獻佛一下: 在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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-27 23:54:31 IP:61.216.xxx.xxx 未訂閱
william 您好,   我知道有這個 onMouseWheel事件,但看完 F1 Help 之後,我還是不知道怎麼去操作這個事件函數裡的參數,可以煩請舉個例或稍微說明一下嗎..我只需要讓MDI的child form能使用滾輪...    深深感激..我是新手,請多包涵 
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-28 08:30:32 IP:218.163.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-28 23:15:47 IP:61.216.xxx.xxx 未訂閱
首先,謝謝william、Miles、ccchen 等的指教, 因為Miles的方法我看不太懂,試了一下好像也不行(可能是因為我不知TApplicationEvents在哪), 所以我用ccchen的方法再試了一下,的確是可以用滾輪了,但是功能不夠完整,所以會怪怪的,比如 Scrollby(0,WheelDelta); 不論其中的 WheelDelta 放正數或負數,捲動滾輪不是只能一直往上捲,就是只能一直往下捲,而且並不會因為Form 的內容沒了而停下來,會一直捲一直捲   我試了一些方法想讓它正常點也沒用.. 最後我用 >
系統時間:2024-11-23 3:20:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!