PRocedure TMainForm.WmMouseWheelMessage(var Msg: tagMSG; var Handled: Boolean); begin if (DBGrid.Focused) And (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam > 0 then SendMessage(DBGrid.Handle, WM_KEYDOWN, VK_UP, 0) else SendMessage(DBGrid.Handle, WM_KEYDOWN, VK_DOWN, 0); Handled := True; end; end; ------------------------------------------------------------------------- 問題解決,特別感謝barely(一哥) DBGRID這么寫,先加一個TApplicationEvents, procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam > 0 then SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0) else SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0); Handled := True; end; end; stringgrid這么寫 procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if (stringGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam > 0 then SendMessage(stringGrid1.Handle, WM_KEYDOWN, VK_UP, 0) else SendMessage(stringGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0); Handled := True; end; end;