powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / EditMask - без кириллицы
17 сообщений из 17, страница 1 из 1
EditMask - без кириллицы
    #33110558
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, уважаемые одночатцы!

Помогите, пожалуйста, решить одну проблему. Есть строковое поле в DataWindow, которое должно заполняться ТОЛЬКО английскими буквами и цифрами. Естественно, юзеру это глубоко фиолетово, и он умудряется впихнуть в это поле вместо английских букв соответствующие русские, из-за чего в последствии невозможно корректно сравнивать данные значения.

Выход я вижу в написании маски ввода значений в это поле - но никак не могу сообразить, как же разрешить ввод только цифр и английских букв? Подскажите пожалуйста, как решить эту проблему? ;-)))

Система - PowerBuilder 9.
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110591
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я подобными вещами не занимался, в лоб похоже надо скриптать itemfocuschanged event, если попал в "поле без кириллицы", то менять раскладку клавиатуры/локаль и т.д и т.п.
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110615
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, тут рассказано как это динамически делать...
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110635
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, уважаемый Филипп, из скрипта у меня ничего не получиться... Для редактирования и манипуляций у меня доступен только DataWindow и объекты...

Это из той оперы, когда один разработчик делает супер-программу, закрывает доступ к ее скриптам и модификации оных, а потом - увольняется... ;-)))

Единственный выход, который вижу я - это использование EditMask или, на самый крайний случай, использование Validation Expressions... ;-)))

С удовольствием послушаю мнение одночатцев о решении данной проблемы... ;-)))
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110663
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmberitЕдинственный выход, который вижу я - это использование EditMask или, на самый крайний случай, использование Validation Expressions... ;-)))
Навскидку думаю ни то ни другое у вас не выйдет.
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110707
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппЯ подобными вещами не занимался, в лоб похоже надо скриптать itemfocuschanged event, если попал в "поле без кириллицы", то менять раскладку клавиатуры/локаль и т.д и т.п.
А того кто будет переключать раскладку клавиатуры, мы будем резать тупым ржавым ножом, чтоб мучался подольше. Никогда и не при каких обстоятельствах нельзя менять раскладку клавиатуры.

2 Amberit, через маску не получится точно. А вот через validation expression есть пара способов вывернуться.
Можно написать там что-то вроде:
pos(GetText(), 'А')+pos(GetText(), 'Б')+....+pos(GetText(), 'я') = 0
В принципе работать будет :)

А лучше всего сделать глобальную функцию, положить ее в какую-нибудь pbl и вызывать эту функцию из validation - CheckAlphabet(GetText())
А сама функция будет:
Код: plaintext
1.
2.
3.
4.
5.
boolean CheckAlphabet(string str)
for i= 1  to len(str)
  c = asc(mid(str, i,  1 )) 
  if c< 65  or c> 96  then return false
next
return true
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110717
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl ФилиппЯ подобными вещами не занимался, в лоб похоже надо скриптать itemfocuschanged event, если попал в "поле без кириллицы", то менять раскладку клавиатуры/локаль и т.д и т.п.
А того кто будет переключать раскладку клавиатуры, мы будем резать тупым ржавым ножом, чтоб мучался подольше. Никогда и не при каких обстоятельствах нельзя менять раскладку клавиатуры.

Ну так её надо туды сюды. Некоторые программки это очень успешно делают, но не то чтобы я на этом настаивал :-)
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110720
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА сама функция будет:
Код: plaintext
1.
2.
3.
4.
5.
boolean CheckAlphabet(string str)
for i= 1  to len(str)
  c = asc(mid(str, i,  1 )) 
  if c< 65  or c> 96  then return false
next
return true

А это по-моему вообще не поможет...
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110722
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А лучше всего почитать в хелпе про функцию Match(...) и исользовать ее в Validation Expression.
Например: Match( a , '^[A-Za-z]+$')
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110748
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейА лучше всего почитать в хелпе про функцию Match(...) и исользовать ее в Validation Expression.
Например: Match( a , '^[A-Za-z]+$')
И это не поможет если юзер раскладку клавы переключил не выходя из поля...
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110881
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, товарищи, за некоторую помощь... Но через Validation решать все-таки нежелательно... В большинстве своем мозг юзера не улавливает разницы между символами кириллицы и латиницы - пишутся ведь одинаково! И чихать он хотел на то, что эти символы имеют совсем разные коды! И уж тем более его введет в ступор после ввода информации (15-20 букв-цифр вперемешку)сообщение о том, что ее нужно ввести еще раз, предварительно сменив раскладку клавиатуры... ;-)))

Подумавши - пришла идея. Попытаться реализовать это через триггер (СУБД Oracle). Пользователь вводит в какой хочет раскладке, триггер при обновлении с помощью функции Translate() преобразовывает все символы кириллицы в латиницу, и в БД заносятся данные в нужной мне раскладке...
;-)))

Сейчас иду на работу - попробую... Что Вы, ув. одночатцы, думаете об этом способе? ;-)))
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110901
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmberitПопытаться реализовать это через триггер (СУБД Oracle)
Возможно и получится, но это несколько идеологически неверно ;)

Вносить в БД не то что пользователь ввел, потом концов не найти, а крайним будет кто?... угу кто это все написал. Лучше из триггера выдавать сообщение что поле содержит неразрешенные символы, или проверять на этапе ввода.
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33110919
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В большинстве своем мозг юзера не улавливает разницы между символами кириллицы и латиницы - пишутся ведь одинаково!
Или еще один дурацкий совет... поставить в качестве шрифта на поле не MS Sans Serif, а шрифт не поддерживающий кириллицу, тогда юзер сразу уловит разницу между C-латинской и кракозяброй.
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33111054
Konstantin Goldobin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такое попробуйте:

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
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33111165
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EstetsЛучше из триггера выдавать сообщение что поле содержит неразрешенные символы, или проверять на этапе ввода.
Я бы сказал "не лучше", а обязательно написать триггер на проверку. Клиент может проверять сколько угодно, но если по условиям задачи данные обязательно должны быть латиницей, то БД должна это всегда гарантировать вне зависимости от того, откуда в нее происходит запись информации - из клиентского приложения, импорта данных или выполнения ручками скрипта SQL.
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33111940
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmberitПодумавши - пришла идея. Попытаться реализовать это через триггер (СУБД Oracle). Пользователь вводит в какой хочет раскладке, триггер при обновлении с помощью функции Translate() преобразовывает все символы кириллицы в латиницу, и в БД заносятся данные в нужной мне раскладке...


Во, хотел посоветовать, да сами додумались.
В триггере сделать проверку/доводку/подмену/инициализацию данных.
И все замечательно будет. Лучше места не найти, чем триггера в IT!!!

А если, например, принципиально хранить то, что ввел пользователь, то надо добавить в таблицу поле и триггер для его заполнения/изменения или "вычисляемоеполе", в случае простоты конвертации. Пользователь и знать не знает о существовании доп. поля, как вообщем-то и клиентское ПО.
А в дальнейшем использовании юзать уже это приведенное к стандарту поле.
...
Рейтинг: 0 / 0
EditMask - без кириллицы
    #33112950
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо большое за советы и бурное обсуждение возникшей передо мной проблемы. Решил ее все-таки, несмотря на все за и против, через триггер. Это решение, несмотря ни на что, обеспечивает прозрачность работы программы для клиента - вводи что хочешь, а храниться это будет так, как нам, разработчикам, нужно... ;-)))

Так что, ув. одночатцы - до скорых встреч на форуме! ;-)))
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / EditMask - без кириллицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]