Перехват ввода при заполнении поля в карточке редактирования
Здравствуйте!
Почему-то неверно отрабатывает свойство «CharacterCase» для поля с типом «TextDataControl» в карточке редактирования. Если быть абсолютно точным, то оно не отрабатывает вообще, т.е значения dccNormal, dccLower, dccUpper никак не влияют на регистр вводимых в поле символов.
Версия Terrasoft CRM – 3.2.017.
Каким образом можно осуществлять перехват ввода с последующим переводом символа в верхний либо нижний регистр?
Нравится
Вы можете на событии OnKeyPress поля карточки обращаться к занесенному значению и переводить его в нужный регистр функциями toUpperCase(), toLowerCase(), например так:
edtYourField.DataField.Value = edtYourField.DataField.Value.toUpperCase();
Не помогло!
Попытка 1.
1. При вводе первого символа "вываливается" debugger, так-как в свойстве edtYourField.DataField.Value хранится значение "null";
Установил проверку. Код стал выглядеть так:
if (edtYourField.DataField.ValAsStr == '')
{
edtYourField.DataField.Value = edtYourField.DataField.Value.toUpperCase();
}
Попытка 2.
1. При вводе первого символа ничего не происходит (срабатывает if);
2. При вводе второго символа происходит перевод первого символа в верхний регистр и перемещение его в начало строки)));
3. Тоже самое, что и в 2. т.е. для каждого последующего символа осуществляется перенос в начало строки.
Подскажите, есть ли еще какие-нибудь возможности перевода вводимых символов в верхний регистр?
Тогда попробуйте на OnExit прописать код
if (!IsEmptyValue(edtTitle.DataField.Value)) {
edtTitle.DataField.Value = edtTitle.DataField.Value.toUpperCase();
}
(пример был проверен на поле Заголовок карточки задач)
Работает но немного не так как надо!
Непосредственно при вводе символы все равно остаются в нижнем регистре. Перевод в верхний регистр происходит только после перехода к дргому полю, либо при закрытии карточки. Т.е проблема именно в достоверности отображаемых данных (edtTitle.DataField.Value одно, а отображается другое).
Перепробовал другие варианты и события. К сожалению на событиях поля можно только получать символы, вводимые пользователем. Как-нибуть вмешаться в процесс записи в поле нельзя, потому что, видите, сбивается курсор в начало поля и вписывает значение в первый символ. Вижу решение конвертировать в нужный регистр по выходу из поля (тогда значение уже сформировалось и его можно без проблем перезаписать), хоть это и не совсем то, что Вам нужно.