用以下代码实现在DBGRID中支持鼠标滑动轮,但多选记录后滑动,焦点丢失,该如何解决

用以下代码实现在DBGRID中支持鼠标滑动轮,但多选记录后滑动,焦点丢失,该怎么解决
procedure   TForm_dbgrid.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;

=====以上代码实现了在DBGRID中可用鼠标滑动轮,但在选定多条记录后滑动,选定的记录焦点全部丢失(用下拉条就不会丢失),该怎么解决呢?

------解决方案--------------------
问题出在你给DBGRID发送的是WM_KeyDown消息,也就是你在DBGrid上按了上下键。当然会出现这种状况。把消息改一下,就可以了。

procedure TForm_DBGrid.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
MsgScroll: TWMScroll;
begin
if (DBGrid1.Focused) and (Msg.message = WM_MOUSEWHEEL) then
begin
MsgScroll.Msg := WM_VScroll;
if Msg.wParam > 0 then
MsgScroll.ScrollCode := SB_LINEUP
else
MsgScroll.ScrollCode := SB_LINEDOWN;
DBGrid1.Dispatch(MsgScroll);
Handled := True;
end;
end;