Adicionar tecla de atalho
Estou fazendo uma calculadora no Delphi seattle, ela esta funcionando perfeitamente se eu clicar no botões de números e tudo mais, porém eu queria fazer, como a calculadora do windows que quando eu clico no numero 1 ele ja joga no edit o numero 1, estou fazendo isso com o ovento onKeyDown, coloquei o keyPreview da form como true, porém não sei qual key é compativel ao numero 1 ao 9 e aos operadores +,-, *, / e o =, saberiam me dizer? se tiver como passar de todas as teclas eu agradeço,
Obrigado.
Obrigado.
Ferrari
Curtidas 0
Melhor post
Hélio Devmedia
11/03/2019
Olá amigo,
as teclas em questão no evento onKeyDown começam com VK_OEM_, aí você pode digitar VK_OEM_ e apertar Ctrl+Espaço e ver o que aparece. Alí você encontra todas as possíveis teclas (até tecla de Zoom) mesmo que o teclado não suporte.
Como esse recurso é uma iteração entre Delphi e windows, a lista completa está no site da microsoft
https://docs.microsoft.com/pt-br/windows/desktop/inputdev/virtual-key-codes
Espero que eu tenha te ajudado...
as teclas em questão no evento onKeyDown começam com VK_OEM_, aí você pode digitar VK_OEM_ e apertar Ctrl+Espaço e ver o que aparece. Alí você encontra todas as possíveis teclas (até tecla de Zoom) mesmo que o teclado não suporte.
Como esse recurso é uma iteração entre Delphi e windows, a lista completa está no site da microsoft
https://docs.microsoft.com/pt-br/windows/desktop/inputdev/virtual-key-codes
Espero que eu tenha te ajudado...
GOSTEI 2
Mais Respostas
Ferrari
10/03/2019
Estou fazendo uma calculadora no Delphi seattle, ela esta funcionando perfeitamente se eu clicar no botões de números e tudo mais, porém eu queria fazer, como a calculadora do windows que quando eu clico no numero 1 ele ja joga no edit o numero 1, estou fazendo isso com o ovento onKeyDown, coloquei o keyPreview da form como true, porém não sei qual key é compativel ao numero 1 ao 9 e aos operadores +,-, *, / e o =, saberiam me dizer? se tiver como passar de todas as teclas eu agradeço,
Obrigado.
Obrigado.
Eu achei esse comandos, porém os correspondente aos valores descritos acima não da certo.
8: Coloca(’ [BACKSPACE] ‘);
9: Coloca(’ [TAB] ‘);
12: Coloca(’ [ALT] ‘);
13: Coloca(’ [ENTER] ‘);
16: Coloca(’ [SHIFT] ‘);
17: Coloca(’ [CONTROL] ‘);
18: Coloca(’ [ALT] ‘);
20: Coloca(’ [CAPS LOCK] ‘);
21: Coloca(’ [PAGE UP] ‘);
27: Coloca(’ [ESC] ‘);
33: Coloca(’ [PAGE UP] ‘);
34: Coloca(’ [PAGE DOWN] ‘);
35: Coloca(’ [END] ‘);
36: Coloca(’ [HOME] ‘);
37: Coloca(’ [SETA ESQUERDA] ‘);
38: Coloca(’ [SETA ACIMA] ‘);
39: Coloca(’ [SETA DIREITA] ‘);
40: Coloca(’ [SETA ABAIXO] ‘);
45: Coloca(’ [INSERT] ‘);
46: Coloca(’ [DEL] ‘);
91: Coloca(’ [WIN ESQUERDA] ‘);
92: Coloca(’ [WIN DIREITA] ‘);
93: Coloca(’ [MENU POP-UP] ‘);
96: Coloca(’0&8242;);
97: Coloca(’1&8242;);
98: Coloca(’2&8242;);
99: Coloca(’3&8242;);
100: Coloca(’4&8242;);
101: Coloca(’5&8242;);
102: Coloca(’6&8242;);
103: Coloca(’7&8242;);
104: Coloca(’8&8242;);
105: Coloca(’9&8242;);
106: Coloca(’ [NUM *] ‘);
107: Coloca(’ [NUM +] ‘);
109: Coloca(’ [NUM -] ‘);
110: Coloca(’ [NUM SEP. DECIMAL] ‘);
111: Coloca(’ [NUM /] ‘);
112: Coloca(’ [F1] ‘);
113: Coloca(’ [F2] ‘);
114: Coloca(’ [F3] ‘);
115: Coloca(’ [F4] ‘);
116: Coloca(’ [F5] ‘);
117: Coloca(’ [F6] ‘);
118: Coloca(’ [F7] ‘);
119: Coloca(’ [F8] ‘);
120: Coloca(’ [F9] ‘);
121: Coloca(’ [F10] ‘);
122: Coloca(’ [F11] ‘);
123: Coloca(’ [F12] ‘);
144: Coloca(’ [NUM LOCK] ‘);
186: Coloca(’Ç’);
187: Coloca(’=´);
188: Coloca(’,´);
189: Coloca(’-´);
190: Coloca(’.´);
191: Coloca(’;´);
192: Coloca(’ [APÓSTROFO] ‘);
193: Coloca(’/´);
194: Coloca(’ [NUM PONTO] ‘);
219: Coloca(’´’);
220: Coloca(’]´);
221: Coloca(’[´);
222: Coloca(’~´);
226: Coloca(’\\´);
GOSTEI 0
Ferrari
10/03/2019
Olá amigo,
as teclas em questão no evento onKeyDown começam com VK_OEM_, aí você pode digitar VK_OEM_ e apertar Ctrl+Espaço e ver o que aparece. Alí você encontra todas as possíveis teclas (até tecla de Zoom) mesmo que o teclado não suporte.
Como esse recurso é uma iteração entre Delphi e windows, a lista completa está no site da microsoft
https://docs.microsoft.com/pt-br/windows/desktop/inputdev/virtual-key-codes
Espero que eu tenha te ajudado...
as teclas em questão no evento onKeyDown começam com VK_OEM_, aí você pode digitar VK_OEM_ e apertar Ctrl+Espaço e ver o que aparece. Alí você encontra todas as possíveis teclas (até tecla de Zoom) mesmo que o teclado não suporte.
Como esse recurso é uma iteração entre Delphi e windows, a lista completa está no site da microsoft
https://docs.microsoft.com/pt-br/windows/desktop/inputdev/virtual-key-codes
Espero que eu tenha te ajudado...
Cara, fiz um aqui já deu certo, vou fazendo os outros, muito obrigado pelas dicas.
GOSTEI 0
Ferrari
10/03/2019
Olá amigo,
as teclas em questão no evento onKeyDown começam com VK_OEM_, aí você pode digitar VK_OEM_ e apertar Ctrl+Espaço e ver o que aparece. Alí você encontra todas as possíveis teclas (até tecla de Zoom) mesmo que o teclado não suporte.
Como esse recurso é uma iteração entre Delphi e windows, a lista completa está no site da microsoft
https://docs.microsoft.com/pt-br/windows/desktop/inputdev/virtual-key-codes
Espero que eu tenha te ajudado...
as teclas em questão no evento onKeyDown começam com VK_OEM_, aí você pode digitar VK_OEM_ e apertar Ctrl+Espaço e ver o que aparece. Alí você encontra todas as possíveis teclas (até tecla de Zoom) mesmo que o teclado não suporte.
Como esse recurso é uma iteração entre Delphi e windows, a lista completa está no site da microsoft
https://docs.microsoft.com/pt-br/windows/desktop/inputdev/virtual-key-codes
Espero que eu tenha te ajudado...
Cara, fiz um aqui já deu certo, vou fazendo os outros, muito obrigado pelas dicas.
Na verdade estava dando certo com todas , ai ajustei e não deu certo, para o numero 1 eu fiz como esta abaixo, consegue me ajudar aonde estou errando?
procedure TForm1.btn1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if KEY = VK_OEM_1 then begin
if vO = '' then begin
vV1 := vV1 + strtofloat(btn1.Caption);
edtR.Text := edtR.Text + btn1.Caption;
end;
if vO <> '' then begin
vV2 := vV2 + strtofloat(btn1.Caption);
edtR.Text := edtR.Text + btn1.Caption;
end;
end;
GOSTEI 0
Hélio Devmedia
10/03/2019
Aparentemente está correto,
O manual das teclas virtuais diz que isso depende do sistema, talvez no seu windows o correto é ajustar para teclas VK_NUMPED mesmo: VK_NUMPAD1.
O manual das teclas virtuais diz que isso depende do sistema, talvez no seu windows o correto é ajustar para teclas VK_NUMPED mesmo: VK_NUMPAD1.
GOSTEI 1
Ferrari
10/03/2019
Aparentemente está correto,
O manual das teclas virtuais diz que isso depende do sistema, talvez no seu windows o correto é ajustar para teclas VK_NUMPED mesmo: VK_NUMPAD1.
O manual das teclas virtuais diz que isso depende do sistema, talvez no seu windows o correto é ajustar para teclas VK_NUMPED mesmo: VK_NUMPAD1.
Tentei também e não deu, pensei que poderia ser isso, mas vou testar com outros teclados e volto a dar a resposta, agradeço a ajuda.
GOSTEI 0
Hélio Devmedia
10/03/2019
Você poderia fazer uma alteração na lógica do seu programa... por exemplo, se quando você aperta o botão 1 ele joga o 1 na tela e soma, isso provavelmente está implementado no onclik.
Você pode simular o clique do botão assim:
if KEY = VK_OEM_1 then
begin
btnNum1.click;
end;
assim ele já faz a lógica que você implementou no botão 1, 2, 3, etc...
Você pode simular o clique do botão assim:
if KEY = VK_OEM_1 then
begin
btnNum1.click;
end;
assim ele já faz a lógica que você implementou no botão 1, 2, 3, etc...
GOSTEI 1