C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Поле числового ввода, Как разрешить вводить только цифры?
westpine
  Отправлено: 23.07.2004, 00:43


Ученик-кочегар

Группа: Участник
Сообщений: 6



Всем доброго времени суток. Вопрос такой: как сделать поле числового ввода, то есть так что-бы в поле ввода Edit можно было вводить только цифры и точку, и что бы при этом выравнивание было на правую сторону ячейки? Всем заранее спасибо
PeroManiak
Отправлено: 23.07.2004, 01:47


Дежурный стрелочник

Группа: Участник
Сообщений: 71



ИМХО, OnKeyPress и там проверяешь, что было нажато
Daan
Отправлено: 23.07.2004, 07:31


Дежурный стрелочник

Группа: Участник
Сообщений: 62



http://www.sources.ru/builder/faq/045.html

CODE

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; // не цифра



Отредактировано Admin — 27/07/2004, 11:18
telepath
Отправлено: 23.07.2004, 11:38


Станционный диспетчер

Группа: Участник
Сообщений: 132



Попробуй MaskEdit
PeroManiak
Отправлено: 24.07.2004, 00:11


Дежурный стрелочник

Группа: Участник
Сообщений: 71



QUOTE
Попробуй MaskEdit

telepath, кажется, попросили сделать это для TEdit, а?
Навеное, westpine хочет именно через Edit, так зачем навязывать?
Oper01
Отправлено: 24.07.2004, 23:38


Станционный диспетчер

Группа: Участник
Сообщений: 145



Чтобы в поле Edit только цифры вводились, напиши в обработчике события OnKeyPress

CODE

Set <char, '0', '9'> Digit;
Digit << '0' << '1' << '2' << '3' << '4' << '5' << '6' << '7' << '8' << '9';
if (! Digit.Contains(Key))
 Key = 0;
westpine
  Отправлено: 26.07.2004, 18:23


Ученик-кочегар

Группа: Участник
Сообщений: 6



Усё работает!! Класс, спасибо.
Deem
Отправлено: 27.07.2004, 10:01


Мастер участка

Группа: Участник
Сообщений: 327



В RxLib есть CurrencyEdit. Это то, что нужно. И выравнивание, и точка (можно и без, а можно и запятую), и кол-во цифр после точки. smile.gif В отличие от MaskEdit, CurrencyEdit очень естественно работает.
Gedeon
Отправлено: 28.07.2004, 19:50


Ветеран

Группа: Модератор
Сообщений: 1742



Посмотрите в форуме в топике текст в трэй я выложил три компонента, один из них TNumericEdit позволяет вводить только числа, можно только целые/дробные, отрицательные/положительные, умеет сам определять знак разделитееля в системе и ставит его вместо . или ,

Вернуться в Вопросы программирования в C++Builder