for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

Обработка ШТРИХ КОДА.
FoxShip
Автор

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

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

Спасибо.
Ratings: 0 negative/0 positive

Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

Сообщений: 431
Дата: 26.08.20 12:15:41
Вот нашел все таки в просторах так сказать...
Но куда то девается первая цифра штрих-кода.

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

Сообщений: 2269
Откуда: НСК
Дата: 30.08.20 07:36:31
активировать текст-бокс
сработать сканером-штрихкода
распознанный текст отобразится в текст-боксе
Ratings: 0 negative/0 positive

Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

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



Исправлено: FoxShip, 07.10.20 11:54
Ratings: 0 negative/0 positive

Re: Обработка ШТРИХ КОДА.
pasha_usue

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

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



Исправлено: pasha_usue, 07.10.20 11:59
Ratings: 0 negative/0 positive

Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

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



Исправлено: FoxShip, 07.10.20 12:29
Ratings: 0 negative/0 positive

Re: Обработка ШТРИХ КОДА.
pasha_usue

Сообщений: 3448
Откуда: Е-бург
Дата: 07.10.20 13:55:08
FoxShip
Хорошо, но в настройках сканера есть включение/отключение только суффиксов. Настройку префиксов не нашел.
У меня Mertech Sunmi ns021 если это о чем то говорит.
Да можно и на постфиксе. Я только не знаю, как без WinApi отдать накопленный буфер обратно в фокус ввода.
Ratings: 0 negative/0 positive

Re: Обработка ШТРИХ КОДА.
FoxShip
Автор

Сообщений: 431
Дата: 07.10.20 18:25:10
Предлагался следующий код:
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



Исправлено: FoxShip, 07.10.20 18:25
Ratings: 0 negative/0 positive



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

On-line: 5 Божья_коровка  (Гостей: 4)

30.11.2020 22:42:46 exec: 0.16
Mem: 1.223 Mb

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