Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / анправление ввода в текстбокс / 6 сообщений из 6, страница 1 из 1
20.11.2006, 09:40
    #34139938
tupoyuser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
анправление ввода в текстбокс
Имеется форма,на форме есть листбокс(лист1) и текстбокс(текст1).Листбокс содержит восемь типов документов.В зависимости от того какой выбираешь в текстбоксе ему назначается соответствующая маска.Хорошо когда маск--99 99 999999, или ххххххххх.Проблемы начинаются с типДокумента---совпаспорт-- ХХХХХХ-АА 999999, где вместо ХХХХХХ--должны быть римские цифры от 1 до 33(I-XXXIII).Как облегчить труд оператора?Вводить приходится много и каждый раз переходить с рус на лат плюс при этом жать capsLock,так же курсором нужно поймать нужную позицию перед тире....теряется много времени.Я думал может ввести замену--т.е. вводить арабскими а передавать значение римскими... Помогите пожалуйста.Прилогается две формы прожекта---весь он большой немогу закинуть---str_num--та о которой я говорю, Gregg--та на которую я передаю значение документа и о которой я в сообщении не упоминал почти.
...
Рейтинг: 0 / 0
20.11.2006, 15:11
    #34141157
MAJIbIIII
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
анправление ввода в текстбокс
Попробуй через процедуру KeyPress.
...
Рейтинг: 0 / 0
20.11.2006, 15:40
    #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
20.11.2006, 23:39
    #34142269
ORAselect
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
анправление ввода в текстбокс
Есть простой вариант - таблица замещения. Одно поле - русский символ, другое - тот, который нужен. KeyPre ил LostFoc где паспорт выбирает всегда в таблице и подпихивает из второго столбца.
...
Рейтинг: 0 / 0
21.11.2006, 16:06
    #34144278
tupoyuser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
анправление ввода в текстбокс
Cпасибо всем!Особенно ВладимируМ!Очень интересное решение,в нем чувствуется надежность.ВладимирМ--вы супер!Спасибо!
...
Рейтинг: 0 / 0
23.11.2006, 10:25
    #34149071
tupoyuser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
анправление ввода в текстбокс
не что то недопонял...nodefault,dodefault()--в хелпе ненашел...Хотелось бы ОЧЕНЬ узнать что это?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / анправление ввода в текстбокс / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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