Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выводить только цифры.

6.7K
28 июля 2005 года
kasyava
28 / / 27.07.2005
Кто нить подскажите как сделать так чтобы в TEdit и TCSplinEdit можно было бы вводить только цифры.
299
28 июля 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by kasyava
Кто нить подскажите как сделать так чтобы в TEdit и TCSplinEdit можно было бы вводить только цифры.

Можно создать событие на OnChange и сверять введенные данные.

2.0K
28 июля 2005 года
WidowMaker
212 / / 05.04.2005
Классически это конечно обработка OnKeyPress
и проверка Key на множество цифр, и в случае
если Key не цифра (или что еще в множестве),
установка Key=0, но это может несовсем
правильно работать с CSpinEdit.

З.Ы.: Есть ведь уже готовые сэмплы...
6.7K
28 июля 2005 года
kasyava
28 / / 27.07.2005
Цитата:
Originally posted by WidowMaker
Классически это конечно обработка OnKeyPress
и проверка Key на множество цифр, и в случае
если Key не цифра (или что еще в множестве),
установка Key=0, но это может несовсем
правильно работать с CSpinEdit.

З.Ы.: Есть ведь уже готовые сэмплы...



Впринципе я так и реализовал, но теперь не могу сообразить как впихнуть сюда клавишу БЭКСПЭЙС.
Нужно чтобы она работала!!!!

6.7K
28 июля 2005 года
kasyava
28 / / 27.07.2005
Усё....
допетрил...
1.3K
29 июля 2005 года
Zephyr
104 / / 03.05.2005
Да сделай так:
В 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; // не цифра        
}
...
8.2K
28 декабря 2005 года
TheMaster
32 / / 23.12.2005
Цитата:

Да сделай так:
В 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 и вааще, где писать этот код?!
2.0K
28 декабря 2005 года
WidowMaker
212 / / 05.04.2005
Вполне логично, но фокусировку как я помню осуществляет родитель.

В общем если разберешься, то выложи плиз примерчик. Будет занятно почитать.

:}
259
28 декабря 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by kasyava
Кто нить подскажите как сделать так чтобы в TEdit и TCSplinEdit можно было бы вводить только цифры.


Проще использовать TMaskEdit

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог