Delphi - Rolar o dbgrid com o scroll do mouse


A roda de rolagem se comporta de forma estranha com DBGrids. Esse código corrige esse comportamento. Apenas coloque um ApplicationEvent (Additional) em um formulário e implemente o evento OnMessage da seguinte forma:

uses ... , Messages;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var i: SmallInt; begin if (ActiveControl is TDBGrid) then begin //se quiser em todas as listas, basta remover esse if. if Msg.message = WM_MOUSEWHEEL then begin Msg.message := WM_KEYDOWN; Msg.lParam := 0; i := HiWord(Msg.wParam); if i > 0 then begin Msg.wParam := VK_UP; end else begin Msg.wParam := VK_DOWN; end; Handled := False; end; end;
end;

Dica: se quiser que o código acima funcione com outras listas (ComboBox, ListView...) basta retirar o primeiro if.

delphi · ‎dbgrid · ‎mouse · ‎scroll · ‎applicationevent · ‎message

Última atualização: 17/01/2018 às 18:18


  • Buscar