:: Visual Foxpro, Foxpro for DOS
Обработка ШТРИХ КОДА.
FoxShip
Автор

Сообщений: 458
Дата регистрации: 27.06.2007
Прежде чем спрашивать переворошил форум.
Может не так искал.
Вопрос, уверен, обсуждался и наверное у кого нибудь и код есть.

Нужно обработать штрих-код в активной форме, но нет активного поля ввода.
Чтобы лишний раз не нажимать кнопку добавления записи необходимо, чтобы форма при получении данных со сканера штрих-кода сама добавляла запись в таблицу и записывала этот штрих код в соответсвующее поле.

Спасибо.
Ratings: 0 negative/0 positive
Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

Сообщений: 458
Дата регистрации: 27.06.2007
Вот нашел все таки в просторах так сказать...
Но куда то девается первая цифра штрих-кода.

LPARAMETERS nKeyCode, nShiftAltCtrl
LOCAL cInput, cKbd, xKey
IF between( m.nKeyCode, 48, 57 ) .and. ( m.nShiftAltCtrl == 0 )
NODEFAULT
m.cKbd = Chr( m.nKeyCode )
*** Добираем весь уже введенный клавиатурный буфер
DO WHILE chrsaw()
m.xKey = Inkey()
IF between( m.xKey, 48, 57 )
m.cKbd = m.cKbd + Chr( m.xKey )
ENDIF
ENDDO
WAIT WINDOW NOWAIT m.cKbd
ELSE
DoDefault( m.nKeyCode, m.nShiftAltCtrl )
ENDIF
Ratings: 0 negative/0 positive
Re: Обработка ШТРИХ КОДА.
alextash

Сообщений: 2281
Откуда: НСК
Дата регистрации: 03.05.2006
активировать текст-бокс
сработать сканером-штрихкода
распознанный текст отобразится в текст-боксе
Ratings: 0 negative/0 positive
Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

Сообщений: 458
Дата регистрации: 27.06.2007
Это самое простое что я сделал и оно работает.
Но мне нужно, чтобы когда фокус ввода не стоит на textbox, а на форме.
Я видел как это работает в 1С программах.
Моя программа уже работает, но когда оператор забывает активировать textbox и нажимает скан и ничего не происходит.
Приходится подождать прежде чем форма начинает реагировать и это немного раздражает.
Нет, конечно, можно привыкнуть и выработать автоматизм в работе оператора, но хочется сделать как-то лучше.



Исправлено 1 раз(а). Последнее : FoxShip, 07.10.20 11:54
Ratings: 0 negative/0 positive
Re: Обработка ШТРИХ КОДА.
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Если сканер в разрыве клавиатуры, то в 1С это решается введением префикса и суффикса штрихкода. Компонент по префиксу определяет, что пошёл штрихкод, ловит его, а буфер клавиатуры вычищает, при этом. Потом посылает штрихкод отдельным событием от подключаемого оборудования активному окну подписанному на события оборудования.

В фоксе можно ловить в KeyPress формы, или _SCREEN. Желательно, префикс на сканере включить, тогда будет понятно отбирать символы у фокуса ввода, или нет.



Исправлено 1 раз(а). Последнее : pasha_usue, 07.10.20 11:59
Ratings: 0 negative/0 positive
Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

Сообщений: 458
Дата регистрации: 27.06.2007
Хорошо, но в настройках сканера есть включение/отключение только суффиксов. Настройку префиксов не нашел.
У меня Mertech Sunmi ns021 если это о чем то говорит.



Исправлено 1 раз(а). Последнее : FoxShip, 07.10.20 12:29
Ratings: 0 negative/0 positive
Re: Обработка ШТРИХ КОДА.
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
FoxShip
Хорошо, но в настройках сканера есть включение/отключение только суффиксов. Настройку префиксов не нашел.
У меня Mertech Sunmi ns021 если это о чем то говорит.
Да можно и на постфиксе. Я только не знаю, как без WinApi отдать накопленный буфер обратно в фокус ввода.
Ratings: 0 negative/0 positive
Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

Сообщений: 458
Дата регистрации: 27.06.2007
Предлагался следующий код:
LPARAMETERS nKeyCode, nShiftAltCtrl
LOCAL cInput, cKbd, xKey
IF between( m.nKeyCode, 48, 57 ) .and. ( m.nShiftAltCtrl == 0 )
NODEFAULT
m.cKbd = Chr( m.nKeyCode )
*** Добираем весь уже введенный клавиатурный буфер
DO WHILE chrsaw()
m.xKey = Inkey()
IF between( m.xKey, 48, 57 )
m.cKbd = m.cKbd + Chr( m.xKey )
ENDIF
ENDDO
WAIT WINDOW NOWAIT m.cKbd
ELSE
DoDefault( m.nKeyCode, m.nShiftAltCtrl )
ENDIF

Переписал в виде и, о ФАНТАСТИКА - заработало !

LPARAMETERS nKeyCode, nShiftAltCtrl
LOCAL cKbd, xKey
IF between( m.nKeyCode, 48, 57 ) .and. ( m.nShiftAltCtrl == 0 )
* NODEFAULT
m.cKbd = Chr( m.nKeyCode )
* WAIT WINDOW m.cKbd
*** Добираем весь уже введенный клавиатурный буфер
DO WHILE chrsaw()
m.xKey = Inkey()
IF between( m.xKey, 48, 57 )
m.cKbd = m.cKbd + Chr( m.xKey )
THISFORM.txtBarcode.Value = m.cKbd
ENDIF
ENDDO
THISFORM.txtBarcode.SetFocus()
ELSE
DoDefault( m.nKeyCode, m.nShiftAltCtrl )
ENDIF



Исправлено 1 раз(а). Последнее : FoxShip, 07.10.20 18:25
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 18 akvvohinc  (Гостей: 17)

© 2000-2024 Fox Club 
Яндекс.Метрика