Добрый день,
Подскажите пожалуйста, как работать с EditMask если тип EditMaskKind = emkRegExpr
например, мне нужны цифры в editBox-е,
ставлю в поле EditMask \d
не работает
emkStandard не предлагать :)
Спасибо!
Нравится
В случае, если Вам нужны только цифры, рекомендуем использовать стандартный контрол 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 - рекомендую просто создать счетчик и при первом срабатывании инкрементировать его, а непосредственно внутри события проверять счетчик и не запускать последующий код на исполнение, если счетчик больше нуля.