|
|
|
| Здравствуйте!
У меня старый сканер штрих-кодов. После сканирования фокус переходит в след поле, а мне нужно его вернуть (или оставить) в поле сканирования.
SetFocus не помогает. Пробовала использовать и вспомогательное поле. По всей видимости все что пишу, происходит до Enter, запрограммированнного в сканере.
Подскажите, кто знает.
СПАСИБО! | |
|
| |
|
|
|
| Попробуйте в access сервис----параметры----клавиатура -------переход при нажатии enter=нет | |
|
| |
|
|
|
| а кода Вы SetFocus
пишите --- у меня помогает.....
Поле1- для считывания.........
Private Sub Поле1_Change()
Поле0.SetFocus
End Sub
или
Private Sub Поле1_AfterUpdate()
Поле0.SetFocus
End Sub | |
|
| |
|
|
|
| Пишу так, если Поле1-для считывания:
Private Sub Поле1_AfterUpdate()
Поле1.SetFocus
End Sub
т.е после обновления, если такой товар найден, он добавляется в накладную, если не найден - предлагается поиск по наименованию из списка.
Так вот если он найден, то фокус мне нужно оставить в этом же поле, т.е. подготовиться для считывания след товара.
Изменение в параметрах помогло, спасибо огромное. Хотелось бы, конечно, не лишать себя возможности пользоватся Enter, но как выход из безвыходной ситуации подойдет. | |
|
| |
|
|
|
| Проверьте происходит ли событие AfterUpdate. AfterUpdate - происходит только когда вы руками в поле формы вводите данные, когда они туда попадают программно, то это событие не происходит.
Какая процедура определяет найден товар в списке или нет? В этой процедуре можно в случае когда товар найден у становить фокус в нужное поле? | |
|
| |
|
|
|
| есть идиотская идея - использовать глобальную переменную :)
например, returnFocus - boolean
1) на некое событие повесить задание для неё значения true (например по нажатию кнопки "считать"- переведём фокус в поле для чтения и скажем "вернись потом")
2) на событие получения фокуса следующим полем проверяем - если нам сказано вернуться, то возвращаем фокус в нужное поле и меняем переменную в false. | |
|
| |
|
|
|
| >Пробовала использовать и вспомогательное поле.
А как вы его пробовали?
Если вспомогательное поле (минимальных размеров) - следующее в переходе по Tab, то на его событии GotFocus можно вернуть фокус предыдущему полю или передать следующему.
Private Sub Text2_GotFocus()
If IsNull(Me.Text0) Then Me.Text0.SetFocus Else Me.Text3.SetFocus
End Sub | |
|
| |
|
|
|
| Анатолий, так и пробовала вспомогательное поле. Но почему-то пишет "Невозможно перейти к указанному полю" (полю сканирования).
Олег, да я на этот код уже как на новогоднюю елку навешивала Me.H.SetFocus где только нужно и не нужно.
Событие AfterUpdate, если я правильно понимаю, происходит, т.к. запись добавлятся, и фокус переходит в след. поле.
Получается, чтобы я не написала - это все происходит до Enter.
С глобальной переменной не пробовала, пока.
Сканер этот все равно менять буду, читает очень плохо.
Пока обойдусь установкой в параметрах.
Еще раз , СПАСИБО. | |
|
| |