Problemas com KEYBOARD para ler código de barras
Enviado: 05 Dez 2007 10:33
Caros colegas,
Depois de "apanhar" bastante, descobri que o KEYBOARD está "atrapalhando" a leitura do código de barras no meu sistema. Tenho um programa que num Dbedit (com Tbrowse, ocorre o mesmo problema), o usuário começa a digitar ou passa o leitor e o sistema faz a busca. Bom, se o usuário digita, blz, mas se passa o leitor alguns dígitos não são lidos, no início, pensei que o problema fosse a montagem da tela, mas não é, pois o problema ocorre, independente da versão do windows.... então notei que se tirar o keyboard, funciona, mas, a função do keyboard é pegar a primeira letra/dígito.... então tá ai o problema...
Fiz um código simples, para exemplificar e mostrar o problema:
Estou compilando com xHarbour 1.0 (xHarbour.org)
Obrigado pela atenção,
Depois de "apanhar" bastante, descobri que o KEYBOARD está "atrapalhando" a leitura do código de barras no meu sistema. Tenho um programa que num Dbedit (com Tbrowse, ocorre o mesmo problema), o usuário começa a digitar ou passa o leitor e o sistema faz a busca. Bom, se o usuário digita, blz, mas se passa o leitor alguns dígitos não são lidos, no início, pensei que o problema fosse a montagem da tela, mas não é, pois o problema ocorre, independente da versão do windows.... então notei que se tirar o keyboard, funciona, mas, a função do keyboard é pegar a primeira letra/dígito.... então tá ai o problema...
Fiz um código simples, para exemplificar e mostrar o problema:
Código: Selecionar todos
*---------------*
FUNCTION MAIN()
CLEAR
*
USE DBF\ESTOQUE
*
aCampos :={'CODIGO','PRODUTO'}
aTitulos:={'C¢digo','Produto'}
*
DBEDIT(04,02,20,77,aCampos,'F_CADPR',,aTitulos,'ÄÂÄ')
*
USE
*
RETURN
*------------------*
FUNCTION F_CADPR()
PARAMETERS nModo
*
IF nModo=4
IF LASTKEY()=27
RETURN(0)
ELSEIF LASTKEY() >= 32 .AND. LASTKEY() < 127
KEYBOARD(CHR(LASTKEY()))
*
DO WHILE .T.
cVarProc:=SPACE(36)
@ 11,22 GET cVarProc PICT '@!'
READ
IF LASTKEY()==27
EXIT
ENDIF
*
INKEY(0)
INKEY(0)
EXIT
ENDDO
ENDIF
RETURN(2)
ENDIF
*
RETURN(1)
Obrigado pela atenção,