Si es un DBEdit, jamás va a poder introducir una letra,solo deja introducir números.
En otros casos he hecho algo parecido a esto:
En el KeyUp del TEdit
Código Delphi
[-]
const
ChrValidos: Tcharset = ['0'..'9', ',']; begin
if not (key in ChrValidos) then
begin
key := #0; BalloonHint1.Show('No se permite esa tecla',TControl(Sender);
end;
end;
Cuando se pulsa una tecla que no pertenece al rango, invalidamos la tecla y mostramos un Hint mejorado (como los bocadillos de los comics), apuntando al control donde está el "error". De esta forma el usuario no tiene que cerrar ventana alguna y puede corregir el error. El BalloonHint se cierra pasados 3 segundos.
En la JVCL se llama JvBalloonHint, pero en torrys.net seguro que encuentras muchos de este tipo.
Saludos.