方法一:
在窗體添加一個TApplicationEvents組件(在Additional中),然後在它的OnMessage事件中添加如下代碼:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin // 當在 DBGrid1 上發生鼠標滾輪事件時 if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam > 0 then // 滾輪上滾 SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0) // 向DBGrid1發送 VK_UP按鍵消息 else // 下滾 SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0); Handled := True; // 消息已經處理完畢 end; end;
DBGrid1表示需要響應滾輪事件的DBGrid名,這樣就能順利解決滾輪支持的問題。
方法二:
首先在窗體定義前面新寫一個類,繼承於DBGrids.TDBGrid,添加一個DoMouseWheel的函數,如下:
type TDBGrid=class(DBGrids.TDBGrid) public function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; end; TFormMain = class(TForm) //....省略 end; var FormMain: TFormMain; implementation {$R *.dfm} //....其他省略 { TDBGrid } function TDBGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; begin if WheelDelta < 0 then DataSource.DataSet.Next; if wheelDelta > 0 then DataSource.DataSet.Prior; end; end.