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
while
loop para continuar chamandoShowCursor
até que o contador seja positivo. O blocoelse
trata da ocultação do cursor: - Se o cursor deve ser ocultado (
Show
éFalse
), garantimos que o contador seja negativo. - Utilizamos um
while
loop para continuar chamandoShowCursor
até 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!