Como Ocultar e Mostrar o Cursor do Mouse em Delphi
Como Ocultar e Mostrar o Cursor do Mouse em Delphi
Controlar a visibilidade do cursor do mouse pode ser útil em várias situações, como em jogos, aplicações de tela cheia, ou interfaces personalizadas. Em Delphi, podemos fazer isso utilizando a função ShowCursor da API do Windows. Este post mostrará como você pode ocultar e exibir o cursor do mouse programaticamente em Delphi.

Introdução
A função ShowCursor permite alterar a visibilidade do cursor do mouse. Ao passar True, você incrementa o contador interno do sistema que controla a visibilidade do cursor. Quando este contador é positivo, o cursor é exibido; quando é negativo, o cursor é oculto. A função MouseShowCursor que vamos implementar ajusta esse contador conforme necessário para garantir que o cursor esteja visível ou oculto.
Código-Fonte
Abaixo está a função MouseShowCursor, que recebe um valor booleano indicando se o cursor deve ser exibido (True) ou ocultado (False).
function MouseShowCursor(const Show: boolean): boolean;
// MouseShowCursor(false); { Oculta o cursor }
// MouseShowCursor(true); { Exibe o cursor }
var
I: integer;
begin
I := ShowCursor(LongBool(true));
if Show then
begin
Result := I >= 0;
while I < 0 do
begin
Result := ShowCursor(LongBool(true)) >= 0;
Inc(I);
end;
end
else
begin
Result := I < 0;
while I >= 0 do
begin
Result := ShowCursor(LongBool(false)) < 0;
Dec(I);
end;
end;
end;
Vamos analisar o código para entender como ele funciona.
Explicação do Código
- Declaração da Função
function MouseShowCursor(const Show: boolean): boolean;
Esta linha declara a função MouseShowCursor, que recebe um parâmetro booleano (Show) e retorna um booleano indicando se a operação foi bem-sucedida.
- Variável de Controle
var
I: integer;
Aqui, declaramos uma variável I do tipo inteiro, que será usada para armazenar o estado do cursor.
- Chamada Inicial à API
I := ShowCursor(LongBool(true));
Inicialmente, chamamos ShowCursor com LongBool(true) para obter o estado atual do cursor. Esta chamada também incrementa o contador interno do cursor.
- Bloco Condicional para Exibir ou Ocultar o Cursor
if Show then
begin
Result := I >= 0;
while I < 0 do
begin
Result := ShowCursor(LongBool(true)) >= 0;
Inc(I);
end;
end
else
begin
Result := I < 0;
while I >= 0 do
begin
Result := ShowCursor(LongBool(false)) < 0;
Dec(I);
end;
end;
O bloco if Show then trata da exibição do cursor:
- Se o cursor deve ser exibido (
ShowéTrue), garantimos que o contador seja positivo. - Utilizamos um
whileloop para continuar chamandoShowCursoraté que o contador seja positivo. O blocoelsetrata da ocultação do cursor: - Se o cursor deve ser ocultado (
ShowéFalse), garantimos que o contador seja negativo. - Utilizamos um
whileloop para continuar chamandoShowCursoraté que o contador seja negativo.
Exemplo Prático
Vamos ver um exemplo de como usar essa função em um programa Delphi.
procedure TForm1.ButtonShowClick(Sender: TObject);
begin
if MouseShowCursor(True) then
ShowMessage('Cursor exibido com sucesso')
else
ShowMessage('Falha ao exibir o cursor');
end;
procedure TForm1.ButtonHideClick(Sender: TObject);
begin
if MouseShowCursor(False) then
ShowMessage('Cursor ocultado com sucesso')
else
ShowMessage('Falha ao ocultar o cursor');
end;
Neste exemplo, temos dois botões: um para exibir o cursor (ButtonShowClick) e outro para ocultar o cursor (ButtonHideClick). A função MouseShowCursor é chamada com True ou False conforme a ação desejada.
Conclusão
Controlar a visibilidade do cursor do mouse em Delphi é uma tarefa simples usando a função ShowCursor da API do Windows. Com a função MouseShowCursor, você pode facilmente ocultar ou exibir o cursor em suas aplicações, melhorando a experiência do usuário conforme necessário.
Esperamos que este tutorial tenha sido útil. Se tiver dúvidas ou sugestões, deixe um comentário abaixo!