Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cual le corresponde a cual? (https://www.clubdelphi.com/foros/showthread.php?t=14927)

jam888 05-10-2004 04:36:40

cual le corresponde a cual?
 
Tengo el siguiente problema, al hacer un programita que me diga el caracter ascii de las teclas que se presionan, en especial con las teclas flecha hacia la izquierda <-,flecha derecha ->y la tecla delete, yo quiero que el programa haga lo siguiente.
yo presiono la tecla 'enter'y que imprima #13,luego ESC y diga #27,luego Bakspace y diga #8 y asi sucesivamente pero no encuentro por ningun lado esa informacion es decir ¿como hago para saber cual le corresponde a cada tecla?

senpiterno 05-10-2004 07:25:32

Tu pregunta no es muy aclaratoria, pero si lo que quieres es capturar cada tecla que se precione en el formulario, lo primero que debes hacer es asignar la propiedad KeyPreview:=True en el formulario, para que todos los eventos de teclado realizados sean capturados primero por el formulario y despues por los demas controles, a menos que quieras capturar dichos eventos en un determinado control del form....
Ya aclarado esto, los eventos que puedes utilizar para capturar las teclas precionadas pueden ser

Código Delphi [-]
   
procedure TForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 
  //codigo.....
 
end;
o
Código Delphi [-]
   
procedure TForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
 
  //codigo.....
 
end;
o
Código Delphi [-]
   
procedure TForm.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 
  //codigo.....
 
end;
Donde la variable Key para KeyDown y KeyUp representa el codigo virtual de la tecla precionada o soltada. Ejem:

enter=13, F1=112, etc

En el evento KeyPress Key devuelve el caracter precionado.

Espero sirva a tus propositos.

Saludos

jam888 05-10-2004 15:51:44

No me entendieron
 
Lo que yo quiero hacer es lo siguiente:tengo un formulario y en el medio de el un cuadro de texto(tedit)y en el evento onkeypress del cuadro de texto meter el siguiente codigo.
case key of
#8 :showmessage('se presiono tab');
#13 :showmessage('se presiono enter');
#27 :showmessage('se presiono escape');
end;
estos codigos yo los saque de los foros ,pero los otros de las otras teclas no las se, como hago para saber cual le corresponde a la ->,<-,tecla delete y todas las teclas restantes.

roman 05-10-2004 16:30:47

Los códigos de las teclas se manejan como constantes VK_DELETE, VK_RETURN, VK_F1, etc. Busca en el índice de la ayuda de Delphi acerca de Virtual Key Codes para que veas todas las constantes.

// Saludos

jam888 05-10-2004 20:04:53

Eso no me sirve
 
Yo se que existen esos codigos virtuales, pero no me sirven por que, si al presionar la tecla * o la tecla delete yo no quiero que aparesca nada en la cajita de texto y hago lo siguiente key:='';y me salta un error de tipos no compatibles por que la variable key es de tipo word y le estoy asignando un string (esto pasa en keydown y keyup),yo se que estos codigos estan pero no los encuentro en la ayuda de delphi, pero en algunos casos citan ejemplos lo cual quiee decir que existen.
Si alguien los conoce me podria ayudar?

vic_ia 05-10-2004 21:47:20

hola....
Cita:

Empezado por jam888
Yo se que existen esos codigos virtuales, pero no me sirven por que, si al presionar la tecla * o la tecla delete yo no quiero que aparesca nada en la cajita de texto y hago lo siguiente key:='';y me salta un error de tipos no compatibles por que la variable key es de tipo word y le estoy asignando un string (esto pasa en keydown y keyup)

creo que la asignacion que tendrias que hacer es
Código Delphi [-]
key := #0
saludos....

jam888 05-10-2004 23:41:53

No Parese Pero Es Muy Dificil O No?
 
Ayer mande un nuevo hilo y nadie me supo contestar,pero la solucion parece ser sencilla a simple vista, lo que quiero hacer es lo siguiente.
En este procedimiento quiero hacer lo siguiente
procedure TForm1.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
case key of
#8 :se showmessage('se presiono backspace');
#27 :se showmessage('se presiono escape');
#13:se showmessage('se presiono enter');
.
.
.
.
y asi seguir con varias teclas mas

end;
end;
yo se que existen codigos virtuales de teclas(vk_enter)pero estos no me sirven, yo nesecito saber cual es el codigo de la ->,<-,de la tecla delete ,en realidad de todasd las teclas para un futuro,por que las teclas virtuales no me sirven.
El hilo anterior que mande ayer es Cual le corresponde a cual ? por si quieren chequearlo.

Pablo Carlos 06-10-2004 00:07:45

Hola. busca en el histórico del foro. hace poco mande bastantes.

Saludos

taita 06-10-2004 02:56:42

Hola. Por lo que veo lo que deseas es utilizar el valor generado por cada tecla al ser pulsada para reconocerlas. He visto por ahi en algún lado (perdona si no te digo donde, pero es que no me acuerdo) las tablas de códigos de cada tecla.
Para obtener sus valores una solución seria que hicieras algo asi para saber cual es el valor original de cada tecla:

- Revisa el teclado para ver si se ha pulsado una tecla.
- Si se ha pulsado una: toma su valor e imprimelo en un label.

Asi obtendrás el valor numérico de cada tecla.

Es lo único que se me ocurre, pero sé que si buscas por aqui en el foro algo encontrarás.
Saludos

senpiterno 06-10-2004 04:14:17

Pruba esto:
Código Delphi [-]
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
      VK_BACK  :showmessage('se presiono backspace, que tiene el codigo de tecla ' + IntTostr(VK_BACK));
      VK_ESCAPE  :showmessage('se presiono escape, que tiene el codigo de tecla ' + IntTostr(VK_ESCAPE));
      VK_RETURN : showmessage('se presiono enter, que tiene el codigo de tecla ' + IntTostr(VK_RETURN));
      VK_LEFT : showmessage('se presiono <-, que tiene el codigo de tecla ' + IntTostr(VK_LEFT));
      VK_RIGHT : showmessage('se presiono ->, que tiene el codigo de tecla ' + IntTostr(VK_RIGHT));
      VK_UP  : showmessage('se presiono la tecla de dirección arriba, que tiene el codigo de tecla ' + IntTostr(VK_UP));
      VK_DOWN   : showmessage('se presiono la tecla de dirección abajo, que tiene el codigo de tecla ' + IntTostr(VK_DOWN));
      //y asi sucesivamente con todas las teclas que quieras
      //los codigos virtuales son constantes que almacenan el valor
      //que referencia la tecla citada, en este caso de tipo integer
      //enter=13.....
 end;
 key:=0;//si no quieres que se imprima el caracter en el edit

end;
Saludos


La franja horaria es GMT +2. Ahora son las 18:04:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi