Quando utilizamos o evento OnMouseWheel para executar algum método, o componente apresenta um atraso na execução, não realizando o procedimento sobre o registro desejado, a função abaixo apresenta uma alternativa para esse evento atualizando o registro no momento exato que o mouse é rolado.
dbgrid1.WindowProc := rolarMouse;
type
CapturaEvento = class(TControl);
procedure rolarMouse(var Message: TMessage);
var
vQuanto : short;
begin
if (Message.Msg = WM_MOUSEWHEEL) then
begin
vQuanto := HiWord(Message.WParam);
vQuanto := vQuanto div 120;
dbgrid1.DataSource.DataSet.MoveBy(-vQuanto);
//Seus Metodos devem ser Inseridos Neste espaço
//Fim dos Metodos
end
else
CapturaEvento(dbgrid1).WndProc(Message);
end;