Ver Mensaje Individual
  #4  
Antiguo 04-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo te aconsejo que mejor ujses una componente especializada para edición de números como el TCurrencyEdit de las librerías RX.

El problema con usar un Edit normal es que tienes que considerar muchos detalles, más de los que pareces darte cuenta.

Para empezar, el método del KeyPress evita que escribas caracteres distintos de los que especificas pero no que los escriban de formas inválidas como

"3.14.15.16.5.4" ó "3,14,15,16,5,4"

según el separador decimal que uses.

Además nada evita que se pegue texto desde el portapapeles, para lo cual tendrías que manejar el mensaje WM_PASTE.

De cualquier forma, códigos como

Código Delphi [-]
if ((Key < '0') or (Key > '9')) and (Key <> #8) and (Key <> ',') then
  Key := #0;

quedan más prolijos así:

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

// Saludos
Responder Con Cita