Buscar

Como detectar um mouse com rodinha

Código

Como detectar um mouse com rodinha
1 - Código Completo

Alguns componentes do Delphi, tais como TRichEdit e TForm permitem a você detectar a rolagem da rodinha do mouse e disparar uma ação de sua preferência. Porém, é sempre uma boa idéia verificar se o usuário está usando um mouse com rodinha.

O trecho de código a seguir usa a função GetSystemMetrics para verificar se um botão com rodinha está presente no sistema. Para testar, coloque um botão em um formulário, dê duplo-clique no botão e escreva o código abaixo no seu evento OnClick:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if GetSystemMetrics(SM_MOUSEWHEELPRESENT) <> 0 then
    ShowMessage('Um mouse com rodinha está presente.')
  else
    ShowMessage('Um mouse com rodinha não foi detectado.');
end;

Execute o aplicativo e clique no botão. Se um mouse com rodinha estiver presente você verá a seguinte mensagem:

Um mouse com rodinha está presente

Se o mouse instalado não tiver a rodinha, a seguinte mensagem será exibida:

Um mouse com rodinha não foi detectado

2 - Entendendo a função GetSystemMetrics

A função GetSystemMetrics está definida no arquivo Windows.pas, (geralmente localizado em "C:Arquivo de programasBorlandDelphi#SourceRtlWinWindows.pas"). Vamos abrir este arquivo e procurá-la. Veja o protótipo:

function GetSystemMetrics(nIndex: Integer): Integer; stdcall;

Podemos ver que esta função pede um argumento do tipo inteiro e retorna um valor inteiro. Como você deve se lembrar, stdcall especifica que os parâmetros para a função serão passados da direita para a esquerda. Vamos agora procurar a definição desta função. Rolamos um pouco o arquivo Windows.pas e a encontramos:

function GetSystemMetrics; external user32 name 'GetSystemMetrics';

Hum! Mais uma chamada à API do Windows. Vamos aos arquivos de ajuda da API Win32 então. Veja o que encontramos:

int GetSystemMetrics(
  int nIndex // system metric or configuration setting
);

De acordo com os arquivos de ajuda, esta função serve para obter várias medidas do sistema (largura e altura de elementos de exibição, por exemplo) e configurações do sistema. Todas as dimensões obtidas estão em pixels. Para o caso de configurações, a função retorna o valor 0 se o elemento testado não estiver presente. No caso do mouse com rodinha, o valor 0 indica que o mouse instalado não apresenta esta funcionalidade.

Para nossa sorte, o arquivo Windows.pas contém ainda todas as constantes necessárias para informarmos à função GetSystemMetrics o que queremos que ela nos retorne. Sem estas constantes, teríamos que fornecer valor inteiros, o que não seria nada prático.

Pesquisando a constante SM_MOUSEWHEELPRESENT no arquivo Windows.pas vemos que seu valor inteiro é 75. Desta forma, podemos fazer uma pequena modificação no código a título de exercício. Veja:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if GetSystemMetrics(75) <> 0 then
    ShowMessage('Um mouse com rodinha está presente.')
  else
    ShowMessage('Um mouse com rodinha não foi detectado.');
end;
 
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Periféricos
Adicionada dia: 29/08/06
Por: José Edvandro Máximo
Visualizada: 2169 vezes

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