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