<< Click to Display Table of Contents >> Navigation: Создание окон для клиента визуализации > HMI. Свойства > Свойство Маска ввода |
Данное свойство имеет тип STRING и указывает допустимые символы, вводимые в клиенте визуализации, например, при работе с элементом Текстовый ввод.
Общий вид маски: (999)(аа)(**), где цифра 9 обозначает, что на это место можно ввести только цифру, латинская буква a – только букву, символ * – букву или цифру.
Пример применения – поле для ввода телефона. Следующая маска позволит ввести только 7 цифр: (999)(99)(99):
Для ввода значений с неопределенным заранее количеством цифр используется символ 0.
Если часть маски ввода содержит 0, то применяется следующий алгоритм подстановки -
В случае, если между необязательными символами оказываются не введенные, при обработке введенного значения пробелы будут удаляться.
Задача |
Значения свойства |
Вид поля ввода |
Ввод в режиме исполнения |
Результат |
Допустим, требуется ограничить ввод чисел диапазоном от 0.0 до 999.99. |
009.90 |
_ _ _._ _ |
_ _0.0_ |
0.0 |
_10.1_ |
10.1 |
|||
_10.99 |
10.99 |
|||
1_1.1_ |
11.1 |
|||
1_ _.1_ |
т.к. не хватает обязательной цифры перед точкой, то введенное значение будет сброшено |
|||
Пусть можно вводить любое число от 0.001 до 99999.999 |
00000.000 |
_ _ _ _ _._ _ _ |
1_ _ _._ _ _1 |
1.1 |
_ _ _ _._ _ _ _ |
Не будет являться числом (будут возникать ошибки при передаче значения в числовые параметры) |
|||
_ _ _ _._1_ |
0.1 |
|||
_ _ _1._ _ _ |
1.0 |
|||
1_2_3._4_ |
123.4 |
|||
Пусть необходимо вводить и цифры и буквы и символы |
9a90/90 |
_ _ _ _ /_ _ |
0x_1/11 |
Значение будет сброшено, т.к. не хватает обязательной цифры после буквы |
0x1_/_2 |
Значение будет сброшено, не хватает обязательной цифры после символа / |
|||
0d23/23 |
0d23/23 |
|||
0k2_/1_ |
0k2/1 |
|||
Пусть необходимо вводить цифры со знаками |
+999 |
+_ _ _ |
125 |
т.к. не хватает обязательной цифры перед точкой, то введенное значение будет сброшено |
-990 |
-_ _ _ |
15_ |
-15 |
|
=999 |
=_ _ _ |
987 |
=987 |
Если разбить маску на отдельные фрагменты на серии из 09a*, то в рамках одного фрагмента нельзя задать 0 и * одновременно, так как это приводит к неоднозначному разбору. В этом случае выдается ошибка режиме исполнения.
Если фрагмент содержит 0, то применяется следующий алгоритм подстановки -
Идет подстановка букв/цифр слева направо. На каждой позиции -
•если в маске a, подставляется буква
•если в маске 9, подставляется цифра
•если в маске 0, то цифра подставляется при соблюдении одного из условий -
•оставшееся число цифр в маске меньше или равно чем оставшееся число цифр в тексте
•на предыдущей позиции была заполнена цифра и оставшееся число 9 в маске меньше чем оставшееся число цифр в тексте
Например, если маска 090, то при вводе принимаются оба значения _45 и 45_, но при получении 45 по входящей связи будет выдано _45
В случае маски 9009 значение 456 будет отображено как 45_6