Substituir evento OnMouseWheel do componente TDbgrid

Descrição

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.

Observações

  • O componente dbgrid1 foi utilizado como exemplo, em desenvolvimento ele deve ser substituído pelo seu dbgrid.
  • A chamada da procedure deve ser realizada no evento OnShow do formulário e deve ser feita da seguinte forma
    dbgrid1.WindowProc := rolarMouse;  
Código
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;   
 
dic_evento_onmousewheel.txt · Última modificação: 2011/04/04 17:44 por bruno.luiz
 
Exceto onde for informado ao contrário, o conteúdo neste wiki está sob a seguinte licença:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki