Здравствуйте!
я столкнулся со следующей проблемой – мне нужно чтоб в компонент CEdit можно было ввести число типа double, а ввод остальных символов – блокировать… подскажите, плиз, как это реализовать
среда – MS VS 2005
Здравствуйте!
я столкнулся со следующей проблемой – мне нужно чтоб в компонент CEdit можно было ввести число типа double, а ввод остальных символов – блокировать… подскажите, плиз, как это реализовать
среда – MS VS 2005
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
13 мая 2009 в 14:02
построить конечный автомат
мааааааленькая табличка – и дело в шляпе
и шаблон потом пригодится
самый натуральный и естественный способ решения такой задачи
13 мая 2009 в 5:05
Я тут подумал, что онлайн-парсер тут не нужен, потому что строка все равно короткая. Хватит даже сравнения с регулярным выражением.
12 мая 2009 в 21:02
Особый экстрим – поддержать региональные символы. Ибо там, в дань традиции, тысячные и десятичные разделители могут состоять аж из 3х символов
12 мая 2009 в 19:03
Есть два более-менее подходящих способа:
- один по Раскину
- один не по Раскину
Второй заключается в блокировании неугодных клавиш при наборе текста пользователем, первый же должен как-то немодально (modeless) сигнализировать пользователю, что тот вбивает ахинею.
Оба этих способа, если их реализовывать "правильно" (кошерно, православно, etc.) подразумевают построение онлайн-парсера (on-line/incremental parser). Собственно, информация по таким парсерам не является большой тайной, и отлично ищется в гугле.
11 мая 2009 в 19:03
Можно проверять при вводе или при считывании числа, есть ли в нем десятичная часть, т.е. точка или запятая, отделяющая целую часть от дробной!
11 мая 2009 в 16:00
хм…кажется была…ну не знаю, давно это было…тогда просто в
событии OnChar, проверяй что бы были только цифры и "." или ","
дальше дело техники )
или так: создаешь переменную m_iNumericData типа double в класе формы, а потом кажется такое в DoDataExchange:
DDX_Text(pDX, IDC_MYEDIT, m_iNumericData), но я не уверен…
а можешь создать регексп-строку такого формата как надо, а потом в какой-то момент проверять с тем что ввели…это поможет и при вставке с буфера в эдит…
посмотреть увы не могу, так как студии нету в даный момент )))
11 мая 2009 в 15:03
#2
нет, С++
#3
нету там маски… ну по крайней мере я не нашел…
11 мая 2009 в 8:05
CEdit это кажется MFC'шный класс…
Посмотри в свойствах объекта…там должно быть что-то типа маски…
11 мая 2009 в 7:01
C#?