Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Habilitar la tecla Delete en ingreso de Numeros en un TEDIT (https://www.clubdelphi.com/foros/showthread.php?t=27552)

onlytk 24-11-2005 01:13:18

Habilitar la tecla Delete en ingreso de Numeros en un TEDIT
 
Hola amigos, tengo el siguiente problema, quiero que en un TEdit solo se pueda ingresar números enteros, y que permita que se borre con las teclas backspace y delete, hice lo siguiente en el evento OnKeyPress.

Código Delphi [-]
if  Not (Key IN ['0'..'9',#8,'.']) then
  Key := #0;

El único problema es, que no se que como permitir que se borre cuando se presione la tecla delete, el hexadecimal #8 es el Backspace en ASCII, tambien encontre que el #22 representa el Pegar (Ctrl + V) y #3 el Copiar (Ctrl + V), pero no encontre cual representa el caracter enviado al presionar la tecla DELETE, .......... además donde puedo encontrar la lista completa de estos codigos ascii? que recive el evento OnKeyPress??

Salu2.

vtdeleon 24-11-2005 01:27:28

Saludos

Prueba con #46

onlytk 24-11-2005 01:31:06

#46??
 
No borra cuando presiono delete, y de donde sacaste esa conclusion???, hay algun link donde pueda saber los codigos??

Gracias por responder (increible la rapides de la respuesta, jejeje). Salu2

AGAG4 24-11-2005 01:37:12

Checa Esto....
 
Prueba la siguiente función:
Código Delphi [-]
function ValidaCharNum(Var Key:Char):Char;
var i:integer;
begin
  i:=Ord(Key);
  if (i in[58..241]) or (i in[10..47]) then
    result:=#0
  else result:=key;
end;
//La llamas de la siguiente forma en el evento OnKeyPress.
  key:=ValidaCharNum(key);

Saludos....

vtdeleon 24-11-2005 01:47:57

Cita:

Empezado por onlytk
No borra cuando presiono delete, y de donde sacaste esa conclusion???, hay algun link donde pueda saber los codigos??

De un programita llamado foDelphi (Friend of Delphi). Creo que lo puedes descargar de: www.danish-shareware.dk/delphi

Héctor Randolph 24-11-2005 02:20:28

En la unidad Windows.pas puedes ver una lista completa con estos códigos.

Cómo ya te indicaron a la tecla Delete le corresponde la constante VK_DELETE que su valor numérico es 46.

Código Delphi [-]
  { Virtual Keys, Standard Set }
  .
  .
  .
  {$EXTERNALSYM VK_INSERT}
  VK_INSERT = 45;
  {$EXTERNALSYM VK_DELETE}
  VK_DELETE = 46;
  {$EXTERNALSYM VK_HELP}
  VK_HELP = 47;
  .
  .

Estos códigos son los que se utilizan para el evento OnKeyDown y OnKeyUp si lo piensas utilizar en el evento OnKeyPress hazlo como te indica AGAG4 utiliza la función Ord().

Código Delphi [-]
  if Ord(Key)=VK_DELETE then

Saludos

onlytk 24-11-2005 02:30:57

Gracias por responder, pues si la tecla delete es el #46, ......... pero mejor debi haber empesado por que mis controles TEdit no borran el caracter cuando se presiona DELETE??????.

Pues despues de revisar, estoy utilizando el componente SimpleGraph y en un ActionList tengo definido un item donde borro los nodos seleccionados en el simplegraph, a este item le tengo asociado el ShortCut "Del", entonces esto me esta atrapando el borrado con la tecla delete en mis TEdits, ahora quite el ShurtCut y todo me funciona OK, Gracias a todos por responder.

roman 24-11-2005 05:45:42

Sólo un comentario: ¿has pensado qué pasa si alguien pega texto en tu control? El portapapeles podrá contener texto con letras. ¿Qué pasa si alguien escribe 45.6...78.9? También tienes que validar que no hay más puntos. Hay controles, como el CurrencyEditor de las bibliotecas RX que se encargan de estos detalles.

// Saludos

onlytk 25-11-2005 13:44:32

Gracias roman, voy a chequear esos controlores.

Salu2.


La franja horaria es GMT +2. Ahora son las 05:15:36.

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