Borland C++ Builder FAQ
составлен по материалам форума
на sources.ru
if ((Key >= '0') && (Key <= '9')) {} // цифры
else if (Key == 8) {} // <-
else if ((Key == '.') || (Key == ',')) // запятая
{
if (((TEdit*)Sender)->Text.Pos(DecimalSeparator)!=0) // если запятая уже есть
Key = 0;
else // если ещё нет
Key = DecimalSeparator;
}
else Key = 0; // не цифра
P.S. DecimalSeparator - глобальная переменная - разделитель целой и дробной части.