Выводить только цифры.
Кто нить подскажите как сделать так чтобы в TEdit и TCSplinEdit можно было бы вводить только цифры.
Можно создать событие на OnChange и сверять введенные данные.
и проверка Key на множество цифр, и в случае
если Key не цифра (или что еще в множестве),
установка Key=0, но это может несовсем
правильно работать с CSpinEdit.
З.Ы.: Есть ведь уже готовые сэмплы...
Классически это конечно обработка OnKeyPress
и проверка Key на множество цифр, и в случае
если Key не цифра (или что еще в множестве),
установка Key=0, но это может несовсем
правильно работать с CSpinEdit.
З.Ы.: Есть ведь уже готовые сэмплы...
Впринципе я так и реализовал, но теперь не могу сообразить как впихнуть сюда клавишу БЭКСПЭЙС.
Нужно чтобы она работала!!!!
допетрил...
В OnKeyPress для Edit или SpinEdit пропиши:
{
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; // не цифра
}
...
Да сделай так:
В OnKeyPress для Edit или SpinEdit пропиши:
{
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; // не цифра
}
...
А Вы уверены, что так надо делать? Ведь похожий вопрос возникал перед разработчиками конторы Borland, соответственно, они должны были как-то его решать. И они его решили - при применении TCSpinEdit, ежели туда какую-нибудь хрень забиваешь, он пытается понять, что записывать в свойство Value, у компонента это, ессно, не получается и он генерит исключение, EConvertError. Причём это происходит тогда, когда компонент теряет фокус. После этого величина в строчке редактирования сбрасывается в ноль, соотвественно, в ноль устанавливается свойство Value этого компонента. Логическим ходом кажется написать обработчик, который перехватывает это исключение, что-нибудь вроде
try
{
\\ Чего-то непонятное
}
catch(EConvertError)
{
\\ Внятный текст обработчика ошибки
}
Единственная проблема возникает: понятия не имею, чего писать после слова try и вааще, где писать этот код?!
В общем если разберешься, то выложи плиз примерчик. Будет занятно почитать.
:}
Кто нить подскажите как сделать так чтобы в TEdit и TCSplinEdit можно было бы вводить только цифры.
Проще использовать TMaskEdit