| 
| 
 | Вопрос # 1 890/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Как использовать MaskEdit для ввода чисел типа Real? Меня интересует диапазон от 0 .. 999.99
 
|  |   Вопрос задал: seryoga (статус: 1-ый класс)Вопрос отправлен: 10 сентября 2008, 15:57
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Мережников Андрей Здравствуйте, seryoga!Кладете на форму компонент MaskEdit. Щелкаете два раза мышкой по свойству EditMask. В появившемся окне задаете маску ввода. Если на каком-то месте цифра должна стоять обязательно, то ставите 0, если может стоять цифра, а может и не стоять - то 9, если может стоять цифра, занк + или -, то #. на том месте, где должна стоять десятичная точка - ставите точку. если в начале маски указать !, то начальные пробелы в введенном значении будут подавлены. Только Когда будете делать преобразование strtofloat(maskedit1.text) учтите, что десятичную точку в значении надо заменить на значение decimalseparator до преобразования в число. Иначе получите сообщение об ошибке. Удачи
 
|  | Ответ отправил: Мережников Андрей (статус: Абитуриент)Время отправки: 10 сентября 2008, 16:14
 Оценка за ответ: 2
 |  
 Мини-форум вопросаВсего сообщений: 28; последнее сообщение — 10 сентября 2008, 18:28; участников в обсуждении: 3. Страницы: [1] [2] [Следующая »]  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 16:04 [#1]:Количество знаков в дробной части фиксировано? |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 16:06 [#2]:да ровно 2 знака |  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 16:18 [#3]:в дополнение к ответу маску в Вашем случае лучше ввести примерно так: !099.99;1;_
 первый 0 для того, чтобы обязательно была введена хоть одна цифра. Хотя, если потом будет выполняться проверка ввода, то можно поставить вместо него 9
 |  
|   | Вадим К (статус: Академик), 10 сентября 2008, 16:20 [#4]:А можно не пользоваться StrToFloat, а воспользоваться старым добрым val. Он мало того, что гарантировано принимает только точку, вне зависимости от локали винды и фазы луны, да ещё и в случае чего сообщит позицию в строке, с которой ему не удалось произвести дальнейшее декодирование. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 16:26 [#5]:Проблема заключается в следующем. пользователь может ввести (и чаще всего так и происходит) следующие 1__.25 Как убрать лишние пробелы? |  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 16:29 [#6]:Использовать AnsiReplaceStr(MaskEdit1.text,' ',''), подключив модуль StrUtils |  
|   | Вадим К (статус: Академик), 10 сентября 2008, 16:41 [#7]:а может просто написать свой обработчик KeyPress/KeyDown и не морочить голову? С другой стороны Ваш формат больно похож на денежный. В библиотеке JVCL точно было что то для этого, ещё в добавок с калькулятором выпадающим (бухгалтера заценят).
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 16:42 [#8]:Спасибо не помогло |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 16:45 [#9]:Да нет там вводится какое то ЕЕД я и сам не знаю что это такое (из раздела медицина)... мне нужно только убрать лишние пробелы тоесть чтобы по свойству onExit  MaskEdit1.text стал __1.25 для данного примера |  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 16:50 [#10]:ну так поставьте в обработчик события OnExit MaskEdit1.text:=AnsiReplaceStr(MaskEdit1.text,' ','')
 |  
|   | Вадим К (статус: Академик), 10 сентября 2008, 16:54 [#11]:Это к чему был коментарий? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 16:56 [#12]:произошел обратный ефект __1.25 заменилось на 1__.25 |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 16:57 [#13]:Мережников Андрей (статус: 4-ый класс), 10 сентября 2008, 15:50: 
 ну так поставьте в обработчик события OnExit
 MaskEdit1.text:=AnsiReplaceStr(MaskEdit1.text,' ','')
 
 произошел обратный эфект __1.25 заменилось на 1__.25
 |  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 17:04 [#14]:Сейчас проверил - все работает нормально. |  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 17:06 [#15]:Напишите какую маску ввода задали в MaskEdit |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 17:10 [#16]:999.99;1;_ |  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 17:19 [#17]:вот если бы Вы написали маску ввода, которую я Вам писал: !999.99;1;_  (с восклицательным знаком впереди) то все бы работало как надо, а Вы двойками раскидываетесь за ответы
 |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 17:21 [#18]:Спасибо |  
|   | Мережников Андрей (статус: Абитуриент), 10 сентября 2008, 17:25 [#19]:"спасибо, помогло" или "спасибо,отстаньте"?   |  
|   | seryoga (статус: 1-ый класс), 10 сентября 2008, 17:27 [#20]:ПРОДОЛЖАЕМ РЕШАТЬ ПРОБЛЕМУ. вводим 1__.5_ на выходе получаем __1._5 дробная часть должна начинаться сразу после точни |  Страницы: [1] [2] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |