|
Вопрос # 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] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|