TeCLaS ascII

Delphi

24/08/2003

eu queria saber como posso capturar as teclas que são digitas pelo teclado, tipo quando teclarem a tecla ´R´ a conteca um evento e quando digitarem a tecla ´E´ outro, se vcs diverem a tabela ASCII, ja vai ser de grande ajuda.........


Joni

Joni

Curtidas 0

Respostas

Lordskinner

Lordskinner

24/08/2003

Cara, quanto ao código ASCII das teclas vc pode fazer o seguinte, cria um aplicativo e coloca um [u:d471e4561b]Label no form[/u:d471e4561b], dai passa a propriedade [u:d471e4561b]KeyPreview[/u:d471e4561b] do form para [u:d471e4561b]True[/u:d471e4561b], depois cria um evento [u:d471e4561b]OnKeyDown[/u:d471e4561b] no form e coloca a seguinte linha:

label1.caption:=format(´a tecla pressionada é ¬d´,[key]);

vai fica mais ou menos assim:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
label1.caption:=format(´O códig ASCII da tecla é ¬d´,[key]);
end;

dai roda o programa, quando vc apertar uma tecla, o label vai retornar o valor ascII da tecla.

Quanto a vc executar um evento quando vc apertar uma tecla, eu gosto de usar o OnKeyDown do form tbm, Tipo, tem um exemplo ai em baixo, da uma olhada:


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
13:begin { O 13 É O CÓDIGO ASCII DA TECLA ENTER }
form1.Caption:=´A tecla ENTER foi pressionada´;
form1.color:=clblack;
end;
32:begin
form1.Caption:=´A tecla de Espaço foi pressionada´;
form1.color:=clwhite;
end;
end;
end;

{ Esta procedure opcional, só pra fazer voltar ao normal quando
soltar a tecla}


procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
13:begin { O 13 É O CÓDIGO ASCII DA TECLA ENTER }
form1.Caption:=´A tecla ENTER foi liberada´;
form1.color:=clbtnface;
end;
32:begin { O 32 É O CÓDIGO DA BARRA DE ESPAÇO }
form1.Caption:=´A tecla de Espaço foi liberada´;
form1.color:=clbtnface;
end;
end;
end;



Ufa, bem, é isso, qualquer coisa, me da um toque ok;


GOSTEI 0
Cebikyn

Cebikyn

24/08/2003

Eis um site que complementa a resposta do colega:

http://www.asciitable.com/

O site tem uma tabela ASCII completa, para usar no Delphi, pegue os valores da coluna ´Dec´.

se vcs diverem a tabela ASCII, ja vai ser de grande ajuda.........


------------
OBS: Editei esta msg por ter causado um terrível mal entendido...


GOSTEI 0
Joni

Joni

24/08/2003

só uma perguntinha, como se eh o codigo com duas teclas tipo Shift+A
Ctrl+Shift etc


GOSTEI 0
Cebikyn

Cebikyn

24/08/2003

só uma perguntinha, como se eh o codigo com duas teclas tipo Shift+A Ctrl+Shift etc


Neste caso, deve-se verificar o [b:0125047acf]Shift[/b:0125047acf]:

if (ssAlt in Shift) and (Key = XX)  // ALT + XX
then
  ...


em que XX é o código ASCII da tecla desejada.

[b:0125047acf]ssAlt[/b:0125047acf] pode ser substituido por [b:0125047acf]ssShift[/b:0125047acf] (tecla Shift) ou [b:0125047acf]ssCtrl[/b:0125047acf] (tecla Ctrl).


GOSTEI 0
Lordskinner

Lordskinner

24/08/2003

[size=18:cf28092652]Ao [u:cf28092652]cebikyn[/u:cf28092652], Desculpe por tentar ajudar[/size:cf28092652]


GOSTEI 0
Cebikyn

Cebikyn

24/08/2003

Ao [u:e4d910a71a]cebikyn[/u:e4d910a71a], Desculpe por tentar ajudar


Opa, parece que fui mal compreendido, não disse que vc estava errado, muito menos que não ajudou, apenas sugeri um site, desculpem pelo mal entendido! Olhando melhor, vi que realmente [b:e4d910a71a]parece[/b:e4d910a71a] que estou te corrigindo, ou algo assim, mas eu apenas sugeri um site que [b:e4d910a71a]complementa[/b:e4d910a71a] a sua resposta, mas não substitui de maneira alguma a sua resposta, que estava muito bem elaborada e exemplificada. Mas de qualquer forma, desculpe pelo mal entendido. Vou editar a minha resposta anterior para eliminar o mal entendido.


GOSTEI 0
POSTAR