powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / анправление ввода в текстбокс
6 сообщений из 6, страница 1 из 1
анправление ввода в текстбокс
    #34139938
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется форма,на форме есть листбокс(лист1) и текстбокс(текст1).Листбокс содержит восемь типов документов.В зависимости от того какой выбираешь в текстбоксе ему назначается соответствующая маска.Хорошо когда маск--99 99 999999, или ххххххххх.Проблемы начинаются с типДокумента---совпаспорт-- ХХХХХХ-АА 999999, где вместо ХХХХХХ--должны быть римские цифры от 1 до 33(I-XXXIII).Как облегчить труд оператора?Вводить приходится много и каждый раз переходить с рус на лат плюс при этом жать capsLock,так же курсором нужно поймать нужную позицию перед тире....теряется много времени.Я думал может ввести замену--т.е. вводить арабскими а передавать значение римскими... Помогите пожалуйста.Прилогается две формы прожекта---весь он большой немогу закинуть---str_num--та о которой я говорю, Gregg--та на которую я передаю значение документа и о которой я в сообщении не упоминал почти.
...
Рейтинг: 0 / 0
анправление ввода в текстбокс
    #34141157
MAJIbIIII
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй через процедуру KeyPress.
...
Рейтинг: 0 / 0
анправление ввода в текстбокс
    #34141310
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, символы маски невозможно использовать как вводимый текст. Следовательно, вместо маски придется вручную анализировать текущую позицию курсора (TextBox.SelStart) и перехватывать нажатую клавишу в событии TextBox.KeyPress().

Т.е. получается, что надо не маску менять, а менять обработчик события KeyPress.

Логичным решением будет несколько классов TextBox.

На форму кладешь PageFrame с нужным количеством закладок и на каждую закладку свой TextBox. С нужным обработчиком события KeyPress или с нужной маской в простом случае. При выборе элемента ListBox просто активизируешь нужную страницу этого PageFrame (PageFrame.ActivePage = ...).

Чтобы визуально этого PageFrame для пользователя как бы не существовало делаешь ему такие настройки:

PageFrame.Tabs = .F.
PageFrame.BorderWidth = 0

Примерный код TextBox.KeyPress для номера паспорта будет таким:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
LPARAMETERS nKeyCode, nShiftAltCtrl

LOCAL lcChar
lcChar = chr(nKeyCode)
do case
* Позиции с  1  по  6  (начало нумерации с  0 )
case between(this.selstart, 0 , 5 )
	do case
	* Ввод символа "Х" как на русской раскладке, так и на латинской
	case InList(m.lcChar,'х','Х','ч','Ч','[','{','x','X')
		NODEFAULT
		doDefault(ASC("X"), nShiftAltCtrl)
	* Ввод символа "I" как на русской раскладке, так и на латинской
	case InList(m.lcChar,'ш','Ш','i','I')
		NODEFAULT
		doDefault(ASC("I"), nShiftAltCtrl)
	* Ввод символа "V" как на русской раскладке, так и на латинской
	case InList(m.lcChar,'м','М','v','V')
		NODEFAULT
		doDefault(ASC("I"), nShiftAltCtrl)
	* Ввод всех прочих символов и цифр, а также пробела запрещен
	* однако допустимо использовать символы удаления и перемещения
	case IsAlpha(m.lcChar) OR IsDigit(m.lcChar) OR EMPTY(m.lcChar)
		NODEFAULT
	endcase
* Остальные позиции распиши сам по аналогии
case this.selstart =  6 
case between(this.selstart, 7 , 8 )
case this.selstart =  9 
case between(this.selstart, 10 , 11 )
endcase
...
Рейтинг: 0 / 0
анправление ввода в текстбокс
    #34142269
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть простой вариант - таблица замещения. Одно поле - русский символ, другое - тот, который нужен. KeyPre ил LostFoc где паспорт выбирает всегда в таблице и подпихивает из второго столбца.
...
Рейтинг: 0 / 0
анправление ввода в текстбокс
    #34144278
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cпасибо всем!Особенно ВладимируМ!Очень интересное решение,в нем чувствуется надежность.ВладимирМ--вы супер!Спасибо!
...
Рейтинг: 0 / 0
анправление ввода в текстбокс
    #34149071
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не что то недопонял...nodefault,dodefault()--в хелпе ненашел...Хотелось бы ОЧЕНЬ узнать что это?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / анправление ввода в текстбокс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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