|
|
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые одночатцы! Помогите, пожалуйста, решить одну проблему. Есть строковое поле в DataWindow, которое должно заполняться ТОЛЬКО английскими буквами и цифрами. Естественно, юзеру это глубоко фиолетово, и он умудряется впихнуть в это поле вместо английских букв соответствующие русские, из-за чего в последствии невозможно корректно сравнивать данные значения. Выход я вижу в написании маски ввода значений в это поле - но никак не могу сообразить, как же разрешить ввод только цифр и английских букв? Подскажите пожалуйста, как решить эту проблему? ;-))) Система - PowerBuilder 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 20:39 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
Я подобными вещами не занимался, в лоб похоже надо скриптать itemfocuschanged event, если попал в "поле без кириллицы", то менять раскладку клавиатуры/локаль и т.д и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 21:13 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
Кстати, тут рассказано как это динамически делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 21:35 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
К сожалению, уважаемый Филипп, из скрипта у меня ничего не получиться... Для редактирования и манипуляций у меня доступен только DataWindow и объекты... Это из той оперы, когда один разработчик делает супер-программу, закрывает доступ к ее скриптам и модификации оных, а потом - увольняется... ;-))) Единственный выход, который вижу я - это использование EditMask или, на самый крайний случай, использование Validation Expressions... ;-))) С удовольствием послушаю мнение одночатцев о решении данной проблемы... ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 21:55 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
AmberitЕдинственный выход, который вижу я - это использование EditMask или, на самый крайний случай, использование Validation Expressions... ;-))) Навскидку думаю ни то ни другое у вас не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 22:54 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
ФилиппЯ подобными вещами не занимался, в лоб похоже надо скриптать itemfocuschanged event, если попал в "поле без кириллицы", то менять раскладку клавиатуры/локаль и т.д и т.п. А того кто будет переключать раскладку клавиатуры, мы будем резать тупым ржавым ножом, чтоб мучался подольше. Никогда и не при каких обстоятельствах нельзя менять раскладку клавиатуры. 2 Amberit, через маску не получится точно. А вот через validation expression есть пара способов вывернуться. Можно написать там что-то вроде: pos(GetText(), 'А')+pos(GetText(), 'Б')+....+pos(GetText(), 'я') = 0 В принципе работать будет :) А лучше всего сделать глобальную функцию, положить ее в какую-нибудь pbl и вызывать эту функцию из validation - CheckAlphabet(GetText()) А сама функция будет: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 00:10 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
White Owl ФилиппЯ подобными вещами не занимался, в лоб похоже надо скриптать itemfocuschanged event, если попал в "поле без кириллицы", то менять раскладку клавиатуры/локаль и т.д и т.п. А того кто будет переключать раскладку клавиатуры, мы будем резать тупым ржавым ножом, чтоб мучался подольше. Никогда и не при каких обстоятельствах нельзя менять раскладку клавиатуры. Ну так её надо туды сюды. Некоторые программки это очень успешно делают, но не то чтобы я на этом настаивал :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 00:25 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
White OwlА сама функция будет: Код: plaintext 1. 2. 3. 4. 5. А это по-моему вообще не поможет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 00:28 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
А лучше всего почитать в хелпе про функцию Match(...) и исользовать ее в Validation Expression. Например: Match( a , '^[A-Za-z]+$') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 00:31 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейА лучше всего почитать в хелпе про функцию Match(...) и исользовать ее в Validation Expression. Например: Match( a , '^[A-Za-z]+$') И это не поможет если юзер раскладку клавы переключил не выходя из поля... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 01:40 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
Спасибо, товарищи, за некоторую помощь... Но через Validation решать все-таки нежелательно... В большинстве своем мозг юзера не улавливает разницы между символами кириллицы и латиницы - пишутся ведь одинаково! И чихать он хотел на то, что эти символы имеют совсем разные коды! И уж тем более его введет в ступор после ввода информации (15-20 букв-цифр вперемешку)сообщение о том, что ее нужно ввести еще раз, предварительно сменив раскладку клавиатуры... ;-))) Подумавши - пришла идея. Попытаться реализовать это через триггер (СУБД Oracle). Пользователь вводит в какой хочет раскладке, триггер при обновлении с помощью функции Translate() преобразовывает все символы кириллицы в латиницу, и в БД заносятся данные в нужной мне раскладке... ;-))) Сейчас иду на работу - попробую... Что Вы, ув. одночатцы, думаете об этом способе? ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 08:54 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
AmberitПопытаться реализовать это через триггер (СУБД Oracle) Возможно и получится, но это несколько идеологически неверно ;) Вносить в БД не то что пользователь ввел, потом концов не найти, а крайним будет кто?... угу кто это все написал. Лучше из триггера выдавать сообщение что поле содержит неразрешенные символы, или проверять на этапе ввода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 09:06 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
В большинстве своем мозг юзера не улавливает разницы между символами кириллицы и латиницы - пишутся ведь одинаково! Или еще один дурацкий совет... поставить в качестве шрифта на поле не MS Sans Serif, а шрифт не поддерживающий кириллицу, тогда юзер сразу уловит разницу между C-латинской и кракозяброй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 09:13 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
Вот такое попробуйте: instance var: string is_prev editchanged: if not match( data, '^[a-zA-Z0-9]*$') then setText( is_prev) else is_prev = data end if -- With regards, Konstantin Goldobin www.vsi.ru/~kgold Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 10:07 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
EstetsЛучше из триггера выдавать сообщение что поле содержит неразрешенные символы, или проверять на этапе ввода. Я бы сказал "не лучше", а обязательно написать триггер на проверку. Клиент может проверять сколько угодно, но если по условиям задачи данные обязательно должны быть латиницей, то БД должна это всегда гарантировать вне зависимости от того, откуда в нее происходит запись информации - из клиентского приложения, импорта данных или выполнения ручками скрипта SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 10:39 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
AmberitПодумавши - пришла идея. Попытаться реализовать это через триггер (СУБД Oracle). Пользователь вводит в какой хочет раскладке, триггер при обновлении с помощью функции Translate() преобразовывает все символы кириллицы в латиницу, и в БД заносятся данные в нужной мне раскладке... Во, хотел посоветовать, да сами додумались. В триггере сделать проверку/доводку/подмену/инициализацию данных. И все замечательно будет. Лучше места не найти, чем триггера в IT!!! А если, например, принципиально хранить то, что ввел пользователь, то надо добавить в таблицу поле и триггер для его заполнения/изменения или "вычисляемоеполе", в случае простоты конвертации. Пользователь и знать не знает о существовании доп. поля, как вообщем-то и клиентское ПО. А в дальнейшем использовании юзать уже это приведенное к стандарту поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 13:59 |
|
||
|
EditMask - без кириллицы
|
|||
|---|---|---|---|
|
#18+
Всем спасибо большое за советы и бурное обсуждение возникшей передо мной проблемы. Решил ее все-таки, несмотря на все за и против, через триггер. Это решение, несмотря ни на что, обеспечивает прозрачность работы программы для клиента - вводи что хочешь, а храниться это будет так, как нам, разработчикам, нужно... ;-))) Так что, ув. одночатцы - до скорых встреч на форуме! ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 23:44 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33110722&tid=1338304]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 333ms |

| 0 / 0 |
