



Há situações em onde ocorre a necessidade de ser controlado o estado
do CAPS Lock ou NUM Lock. Uma tela de login é um bom exemplo de local.
Uma forma muito comum de mostrar para o usuário o estado destas teclas
é através de um status bar em seu formulário principal.
Veja o exemplo, crie um formulário com um status bar,
e adiciona ao status bar 3 panels.
Em seguida, na sessão private, declare o seguinte procedimento:
1 | procedure OnMessageOwn(var Msg: TMsg; var Handled: Boolean); |
A implementação do procedimento deverá ser conforme o exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | procedure TForm1.OnMessageOwn(var Msg: TMsg; var Handled: Boolean) ; var KeyState: TKeyboardState; begin GetKeyboardState(KeyState); if KeyState[VK_NUMLOCK] = 0 then StatusBar1.Panels[0].Text:= '' else StatusBar1.Panels[0].Text:= 'Num'; if KeyState[VK_CAPITAL] = 0 then StatusBar1.Panels[1].Text:= '' else StatusBar1.Panels[1].Text:= 'Caps'; if KeyState[VK_INSERT] = 0 then StatusBar1.Panels[2].Text:= '' else StatusBar1.Panels[2].Text:= 'Ins'; end; |
Agora para finalizar, no evento OnCreate do seu formulário,
deixe conforme o exemplo abaixo:
1 2 3 4 | procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := OnMessageOwn; end; |
Pronto!
Ao executar o projeto, você verá sua aplicação monitorando o CAPS Lock,
Num Lock e Insert.
Fonte Base: http://www.planetadelphi.com.br/dica/6824/verificar-estado-da-tecla-caps-lock