Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Código ascii de la tecla +

Hola,

no se si es que yo tenía un concepto equivocado o estoy haciendo algo mal, pero me he encontrado con el siguiente problema, cuando yo tengo que saber si se ha pulsado cierta tecla voy a mirar mi tabla ascii, veo el valor decimal que le corresponde a la tecla que quiero controlar y entonces me voy al keydown y compruebo.

Código Delphi [-]
procedure TFrmMenuArt.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
tecla:Char;
begin
if key=13 then pulsada:=13;//el intro
if key=27 then pulsada:=27;//escape
if key=8 then pulsada:=8;//backspace.
end;
Hoy quería comprobar si se ha pulsado la tecla '+', en mi tabla ascii me dice que el valor es 43, pero el código no me respondía bien, entonces voy a comprobar porque no funciona y me encuentro con que si pulso el '+' del bloque numérico su valor es 107, que sería la 'k', y si pulso el '+' que hay al lado del intro me dice que el valor es 187 que correspondería con '╗', también me encuentro que las letras da igual que las pulse en mayúscula que en minúscula que me devuelve siempre el valor de mayúscula, ¿es que la comprobación no se hace como lo estoy haciendo yo?, gracias de antemano.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #2  
Antiguo 21-03-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Hola: y si pones asi en el evento onkeypress te sirve??

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if Key = #43 then
      ShowMessage('Signo Mas') else
      ShowMessage('Otra Tecla');
end;
Responder Con Cita
  #3  
Antiguo 21-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

el código lo tengo puesto en el evento onkeydown para saber si la tecla que estoy controlando se mantiene pulsada cuando hago otras cosas en el formulario, en el onkeyup pongo la variable pulsada:=0.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #4  
Antiguo 22-03-2012
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.235
Poder: 20
ElKurgan Va camino a la fama
¿Que versión de Delphi estás utilizando? Porque con el soporte unicode de las nuevas versiones, creo que dá más de un problema con los Ascii, Ansi y widestring

Un saludo
Responder Con Cita
  #5  
Antiguo 22-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ElDioni.

Cada tecla tiene asociado dos valores, uno es el código interno de la tecla (código de rastreo) y el otro el código ASCII del caracter que tiene asignado. Por ejemplo, tanto la letra 'A' como la letra 'a' tienen un valor scan code igual a 65, sin embargo, el código ASCII de la letra 'A' es 65 y el de la letra 'a' es 97.

El parámetro Key en los eventos OnKeyDown y OnKeyUp contiene el valor del código de rastreo del teclado, para obtener el código ASCII de la tecla presionada hay que evaluar el valor del parámetro Key en el evento OnKeyPress.

El órden en que se disparan los eventos anteriores es OnKeyDown, OnKeyPress y OnKeyUp.

Estos son los códigos de rastreo de un teclado estándard:


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 22-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola, gracias por contestar,

mi versión de delphi es la 2005.

he estado buscando con respecto a lo que me comentas ecfisa pero hay una cosa que no acabo de entender o no se de donde sale, como hemos comentado la 'A' y la 'a' aparecen como 65 en el evento OnKeyDown, pero si voy al dibujo que me has adjuntado no veo donde aparece ese 65 o de donde lo tengo que sacar, me lo podrías aclarar.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #7  
Antiguo 22-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ElDioni.

Los valores del scan code en la imágen estan en hexadecimal: (41)h = 65d.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 22-03-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Puedes usar la constante VK_ADD para detectar si se pulsó la tecla +.

Esta y otras constantes las encuentras en la unidad Windows.pas. También en la ayuda de Delphi, bajo el tema Virtual Key Codes podrás encontrar una lista de todas estas constantes.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #9  
Antiguo 23-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ElDioni.

Aquí conseguí una tabla completa de scan codes

Si quisieras obtener el número de tecla (Hex Scan Code) podrías usar la función MapVirtualKey.

Un ejemplo:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
  private
     procedure WMKeyDown(var Msg: TWMKeyDown); message WM_KEYDOWN;
  public
  end;

var
  Form1: TForm1;

implementation 

procedure TForm1.WMKeyDown(var Msg: TWMKeyDown);
const
   MAPVK_VK_TO_VSC = 0;
begin
  ShowMessage('Hex scan code: '+ IntToHex(MapVirtualKey(Msg.CharCode, MAPVK_VK_TO_VSC),2));
end;
...
Pero no se puede obtener código ASCII de forma directa a partir del valor recibido.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 23-03-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aqui esta este programa que genera lo de las techas entre otras cosas.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 17-09-2012 a las 01:19:12.
Responder Con Cita
  #11  
Antiguo 23-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

lo primero muchas gracias a todos por sus aportes, voy a hacer unas pruebas y ver como me queda pero con la información que me dieron tengo más que suficiente, de nuevo gracias.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sustituir Codigo ASCII Fichero texto lacovera Varios 12 13-11-2009 14:38:28
Convertir caracter a codigo ASCII Tecnic2 OOP 13 28-03-2009 15:07:09
Codigo ascii Luli Varios 2 26-04-2005 10:11:13
código ascii davidgaldo Varios 5 10-11-2004 23:16:07
Código ASCII estendido rafita Varios 2 14-09-2004 14:01:10


La franja horaria es GMT +2. Ahora son las 05:31:49.


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
Copyright 1996-2007 Club Delphi