13.01.2010, 15:21 | #1 |
Участник
|
Контроль ввода на форме.
Возможно это просто, но не нашел как. Как стандарно запретить ввод символа или не дать ввести поле в целом, если там встречаются символы при вводе числового поля в Grid (integer или RealEdit).
|
|
13.01.2010, 15:31 | #2 |
Участник
|
|
|
13.01.2010, 15:44 | #3 |
Участник
|
Можно вводить числовые выражения, например, "2*2" или "50*100/118".
Но проблема автора совершенно непонятна. |
|
|
За это сообщение автора поблагодарили: glibs (2), Lemming (6), driller (1). |
13.01.2010, 15:55 | #4 |
Участник
|
Уточняю : вместо числа ввожу : <asdert> или <1цу23> - получаю что введенное значение = 0,00. Typeof(xxx) == Types::Real . Поле определено через расширенный тип данных - real.
|
|
13.01.2010, 16:08 | #5 |
Участник
|
Цитата:
пы.сы. и отдельно, о чем тут это? Последний раз редактировалось Lemming; 13.01.2010 в 16:12. Причина: м |
|
13.01.2010, 16:17 | #6 |
Участник
|
Цитата:
незнанию. 2. Typeof(xxx) == Types::Real это я уже в методе modified этого поля на Grid пытаюсь понять тип введенного поля, а он все равно = Real и на цифры и на буквы. 3. Форма Tutorial_Form_Controls. На поле RealEdit запросто пропускает <qwerty> на поле Integer не дает вводить !! Последний раз редактировалось pwp; 13.01.2010 в 16:23. |
|
13.01.2010, 16:30 | #7 |
Участник
|
А в чем вообще задача? Что нужно сделать и для чего?
__________________
Ivanhoe as is.. |
|
13.01.2010, 16:30 | #8 |
Участник
|
|
|
13.01.2010, 16:38 | #9 |
Участник
|
Мы хотим чтобы при вводе в поле RealNumber символов вместо цифр форма также нам говорила об ошибке в формате числа(как в случае с Integer), а не принимала его = 0,00. Только и всего.
|
|
13.01.2010, 16:47 | #10 |
Участник
|
Цитата:
|
|
13.01.2010, 16:51 | #11 |
Участник
|
Цитата:
Сообщение от Lemming
Уфф...извините, но тады вам сюда
|
|
13.01.2010, 16:51 | #12 |
Участник
|
Считайте , что это сделать нельзя (без адских выкрутасов).
Если вы ожидаете ввод значения, отличного от 0,00 - то проверяйте это либо в validate() либо в другом месте (при закрытии формы/при сохранении записи/ и т.д.) Кстати, RealEdit при вводе некорректных символов принимает ПОСЛЕДНЕЕ значение, а не 0,00... (если поле принадлежит источнику данных) Последний раз редактировалось Bishop; 13.01.2010 в 17:02. |
|
13.01.2010, 16:55 | #13 |
Участник
|
Что-то вы жостко застебались, ребята
На самом деле это фигово, что IntEdit ругается на формат, а RealEdit - нет. |
|
13.01.2010, 17:06 | #14 |
Участник
|
|
|
13.01.2010, 17:09 | #15 |
Участник
|
AX 4.0 SP2
Ввожу в любой контрол типа RealEdit букву "A" - сообщения об ошибке нет, значение устанавливается либо 0,00, либо последнее (для источников данных). Ввожу в любой контрол типа IntEdit букву "A" - получаю сообщение об ошибке. У вас не так? |
|
13.01.2010, 17:17 | #16 |
Участник
|
AX 3.0 SP6 - ругается и в целом и в вещественном поле.
AX 4.0 и AX 2009 - ругается только в целом, в вещественном не ругается.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: pwp (1). |
13.01.2010, 17:17 | #17 |
Участник
|
Насколько я понимаю, автор пытается словами выразить следующее:
IntEdit - при вводе такой последовательности "123abc456" Axapta ругнется на неверные символы, но оставит первые введенные цифры. Т.е. останется "123". Преобразование соответствует работе str2int() RealEdit - при вводе такой последовательности "123abc456" Axapta ругнется на неверные символы, и обнулит вообще все поле. Т.е. останется "0,00" Преобразование НЕ соответствует работе str2num() Как лечить? Ну, вручную выполнять преобразование в modified() методах введенного значения... |
|
|
За это сообщение автора поблагодарили: pwp (1). |
13.01.2010, 17:17 | #18 |
Участник
|
о, нашел таки. В 4.0 есть функция strKeep(). Она проверяет, чтобы в данной строке были только допустимые символы, список которых задается в ее параметрах. Можно наверное так выкрутиться
а хотя нет, поторопился малость(( Последний раз редактировалось Zodiak; 13.01.2010 в 17:21. |
|
13.01.2010, 17:19 | #19 |
Участник
|
Цитата:
|
|
13.01.2010, 18:58 | #20 |
Участник
|
Цитата:
У нас ядро 4.0.2501.116 Цитата:
Сообщение от Ivanhoe
AX 4.0 и AX 2009 - ругается только в целом, в вещественном не ругается
я и стал искать BestPractice на эту тему... и никак... Как это обойти-понятно, проверить введенное значение на = 0,00.Может это str2num не работает, как пишет В.Максимов, я не знаю какие в этом случае функции используются. В общем спасибо всем, принявшим участие, если будут другие идеи - пишите... |
|
|
За это сообщение автора поблагодарили: Lemming (5). |