Buscar

Detectando o uso do botão wheel (roda) do mouse.

Código

(*

Você já deve ter notado que os controles do Delphi, por padrão, não executam o comando "scroll" dado pelo botão wheel (roda) do mouse. Para que eles executem tal função, devemos detectar quando este botão é 'pressionado', e então, executar o scroll. Seguindo os passos abaixo, veremos como:

1- Declare na seçao private do form principal, o seguinte procedimento:

*)


...
type
  TForm1 = class(TForm)
private
  { Private declarations }
  procedure OnMessageOwn(var Msg: TMsg; var Handled: Boolean);
public
  { Public declarations }
end;
...

(*

2 - Implemente-o como abaixo:

*)


procedure TForm1.OnMessageOwn(var Msg: TMsg; var Handled: Boolean) ;
var i: SmallInt;
begin
  if Msg.message = WM_MOUSEWHEEL then
  begin
    Msg.message := WM_KEYDOWN;
    Msg.lParam := 0;
    i := HiWord(Msg.wParam) ;
    if i > 0 then
      Msg.wParam := VK_UP
    else
      Msg.wParam := VK_DOWN;
    Handled := False;
  end;
end;

(*

3- No evento onCreate do Form, basta ativar o procedimento:

*)


procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := OnMessageOwn;
end;

(*

Com isso o "scroll" do mouse funcionará em toda a aplicação, ativando todos os controles que tiverem barra de rolagem

*)

Publicidade

Vote na dica




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes da dica

Categoria: Forms
Adicionada dia: 07/10/09
Por: Reginaldo Feliciano
Visualizada: 11881 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009