EditMask

Добрый день,

Подскажите пожалуйста, как работать с EditMask если тип EditMaskKind = emkRegExpr

например, мне нужны цифры в editBox-е,

ставлю в поле EditMask \d
не работает

emkStandard не предлагать :)

Спасибо!

Нравится

7 комментариев

В случае, если Вам нужны только цифры, рекомендуем использовать стандартный контрол NumericEdit.

Для того, чтобы добавить маску, выберите emkRegExprEx и введите маску в формате \z либо \d+

Спасибо, Анна,

Цифры я привел просто в качестве примера, нужна возможность задавать именно регулярные выражения.

Пожалуйста, уточните, с какими именно регулярными выражениями Вам нужно работать?

В любом случае, рекомендую использовать расширенный тип emkRegExprEx

Анна,

Меня устрит любой тип регулярных выражений, который поддерживается Terrasoft-ом.

NumericEdit - не совсем удачный контрол, если мне не нужно чтобы по умолчанию в поле проставлялся 0.

Есть проблема: если я задаю маску в формате \d+ и потом программно пытаюсь контролу задать значение, например:

CountryCode.Value = countryCode;
или
CountryCode.Value = 1 * countryCode;
где countryCode - в принципе строка, содержащая цифры - в поле ничего не отображается.

Не могли бы Вы подсказать правильный способ решения проблемы?
Спасибо!

А какая у Вас версия Terrasoft? У меня не получилось воспроизвести проблему в 3.3.2.198 - все отлично отображается в контроле. Возможно, проблему удастся решить промто обновлением сборки.

Исходя из предоставленной информации, могу посоветовать попробовать конвертировать строку в число перед присвоением:

CountryCode.Value = parseInt(countryCode);

Если не получится, предоставьте, пожалуйста, сервисы карточки и скрипта карточки.

Добый день, Анна!

Версия бинарников 3.3.2.217
Попробовал конвертировать строку данной функцией (parseInt) - не помогло, все равно контрол становится пустым и срабатывает событие OnChange.

Пример кода в аттачменте.

Если можно, один вопрос не по теме.

Привязать событие к контролу можно так:
SetObjectEventDispatcher(Window, Button, ButtonName, 'OnClick', 'OnNewButtonClick');

А как отвязать событие (это нужно едвали не чаще, чем привязывать события, например если мы хотим отследить, были ли внесены изменения в форму, то нужно прицепить события OnChange к каждому контролу, а затем, при первом срабатывании еветна нужно отрегистрировать)?

Спасибо!

Проверила на коробочной версии 3.3.2.217:

При MaskKind emkRegExpr - цифры не вводятся вообще, и, соответственно, не присваиваются.
При MaskKind emkRegExprEx - вводятся и присваиваются корректно.

Ваши сервисы требуют дополнительного анализа. В качестве временного решения могу предложить заполнять поля данными на событие OnActivate.

Что касается SetObjectEventDispatcher - рекомендую просто создать счетчик и при первом срабатывании инкрементировать его, а непосредственно внутри события проверять счетчик и не запускать последующий код на исполнение, если счетчик больше нуля.

Показать все комментарии