Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 Como detectar um mouse com rodinha em Qua Fev 16, 2011 7:44 am

mistiyoda

Membro
Membro

avatar
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 programas\Borland\Delphi#\Source\Rtl\Win\Windows.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;


http://www.portalmaker.co.cc

2 Re: Como detectar um mouse com rodinha em Qua Fev 16, 2011 8:08 am

Gustavo

Administrador
Administrador

avatar
Depois eu tento fazer um, to tentando aprender design! xF


_______________________________________________


http://directon.forumeiros.com

3 Re: Como detectar um mouse com rodinha em Qua Fev 16, 2011 8:23 am

mistiyoda

Membro
Membro

avatar
legal eu também to tentando aprende design cara

http://www.portalmaker.co.cc

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum