Jump to content
Fivewin Brasil

BUFFER DO TECLADO


PauloPJ

Recommended Posts

OLA GALERA EU DENOVO PRECISANDO DE AJUDA.

PRECISO RESOLVER UM PROBLEMA DE VELOCIDADE DE LEITURA

USO UM LISTBOX E QUANDO DIGITO QUALTER TECLA EU ATIVO UM DIALOGO POR CIMA DA COLUNA QUE ESTA ATIVA PARA EDITAR O CAMPO. MAS QUANDO USO A PISTOLA DE CODIGO DE BARRAS ELE COME PARTE DO QUE FOI PISTOLADO , A LEITURA É MAIS RAPIDA DOQUE A ATIVACAO DO DIALOGO DO GET E ETC.

PERGUNTO TEM COMO EU LER O BUFFER DO TECLADO? ASSIM DEPOIS DO ENTER DA PISTOLA EU MONTO A VARIAVEL COM O CONTEUDO DO BUFFER.

FWHX 8.4

XHARBOUR 1.1.0

PELE C 6.00.4

TELA EM .RES

Link to comment
Share on other sites

OLA GALERA EU DENOVO PRECISANDO DE AJUDA.

PRECISO RESOLVER UM PROBLEMA DE VELOCIDADE DE LEITURA

USO UM LISTBOX E QUANDO DIGITO QUALTER TECLA EU ATIVO UM DIALOGO POR CIMA DA COLUNA QUE ESTA ATIVA PARA EDITAR O CAMPO. MAS QUANDO USO A PISTOLA DE CODIGO DE BARRAS ELE COME PARTE DO QUE FOI PISTOLADO , A LEITURA É MAIS RAPIDA DOQUE A ATIVACAO DO DIALOGO DO GET E ETC.

PERGUNTO TEM COMO EU LER O BUFFER DO TECLADO? ASSIM DEPOIS DO ENTER DA PISTOLA EU MONTO A VARIAVEL COM O CONTEUDO DO BUFFER.

FWHX 8.4

XHARBOUR 1.1.0

PELE C 6.00.4

TELA EM .RES

Link to comment
Share on other sites

Valeu Rubens pela resposta.

Mas eu ja uso um get externo.

Quando pistolo um codigo de barras o __Keyboard( ctecla)

escreve o caracter depois da pistola ai um codigo original que é: 789606014902, quando pistolado ele fica:

896706014902 a pistola escreveu mais rapido que o keyboard()

no get .

VEJA O CODIGO

DEFINE DIALOG oDlgVND RESOURCE "MOVVEND" TITLE "DAV DOCUMENTO AUXILIAR DE VENDA" FONT oFont1 BRUSH oBrushback1 pixel //FONT oFont12

REDEFINE LISTBOX oLbxVND ;

FIELDS &cvetorvnd2 ;

HEADERS &cvetorvnd1 ;

ID 106 UPDATE OF oDlgVND ON CHANGE (mostratxtitem(),MOSTRAFOTOVND(oImagemProd,if(len(alltrim(&tmp_vnd->cod_est))<>0,W_CAM_FOTOPROD+"P"+alltrim(SUBSTR(&tmp_vnd->COD_EST,1,7))+".JPG",cgfileprod),""))

NCOLuna:=oLbxVND:nColAct

NLinha :=oLbxVND:nRowPos

oLbxVND:bKeyDown = { | nKey, nrow, ncol | KeyDownVND( oLbxVND, nKey,oDlgVND,oLbxVND:nColAct,oLbxVND:nRowPos) }

ACTIVATE DIALOG oDlgVND

*-----------------------------------------------------------------------

static function KeyDownVND(oLbxPDV, nKey,oDlgPDV,nColAct,nRowAct)

*-----------------------------------------------------------------------

xretorno:=DIGITA_CODIGO( oDlgVND, oLbxVND, nLinha, nColuna ,nKey)

return(xretorno)

*--------------------------------------------------------------------

STATIC FUNC DIGITA_CODIGO( oDlgVND,LbxVND, nLinha, nColuna,nKey)

*-------------------------------------------------------------------

SELE 15

TMP_VND:=ALIAS()

pos_cursor:= cvetorvnd3[1]

NLinha :=oLbxVND:nRowPos

upos_cursor = &pos_cursor // aqui é a variavel da coluna no listbox

CTECLA:=CHR(nKey)

RTECLA:=CHR(VK_END)

tamanho:=LEN(UPOS_CURSOR)

ad:=oLbxVND:GetColSizes()

pos:=0 //ad[1]

self:=0

aa:={}

aa := ClientToScreen( oLbxVND:hWnd, aa ) // pega a posicao inicial top e left do GET

NTOPLBX:=AA[1]

NLEFTLBX:=AA[2]

lini := ((nlinha-1)*18)+(nTopLbx+18)

cini := pos+nLeftLbx //10 //38

lfim := lini+14

cfim := (cini-3)+ad[1]

xreted:=.f.

DEFINE DIALOG oDlg FONT oFont1 FROM lini,cini to lfim,cfim ;

STYLE nOR( WS_VISIBLE, WS_POPUP) PIXEL

@ 0,0 GET oPos_cursor VAR upos_cursor PICT "@!" FONT oFont1 OF oDlg SIZE (tamanho*69),9 PIXEL

oPos_Cursor:bGotFocus := { || __Keyboard(tecla) } //posiciona o cursor no final da variavel

@ 10, 0 BUTTON oBtn PROMPT "" ACTION ( oDlg:End(),xreted:=.t.,) OF oDlg Default

ACTIVATE DIALOG oDlg

if xreted

&pos_cursor := upos_cursor // grava no arquivo a variavel temporaria do get

end

RETURN(1)

FWHX 8.4

XHARBOUR 1.1.0

PELE C 6.00.4

TELA EM .RES

Editado por - igpjinfo on 08/01/2012 23:02:42

Link to comment
Share on other sites

OK Rubens

Obrigado pela dica.

Eu fiz assim mesmo para testar e funcionou o problema é que nem sempre é pistolado o código, as vezes o usuário digita , e ele fica maluco porque o primeiro caracter só vai aparecer quando ele der enter.

Eu arrumei uma solução usando a sua ideia. Eu somo o caracter que está no nKey antes de editar o get e movo o cursor para o lado direito antes de editar, mas mesmo assim ele as veses coloca este deslocamento para o lado fora da posicao e da um espaco em branco no meio do código, ai depois eu faco um strtran() e tiro este espaco em branco que fica.

Funcionou mas ficou muito feio, fica uma programação suja, (gambiarra)rsrs, gostaria de tentar resolver isso usando o buffer do teclado, se fosse possivel.

Imaginei ativar o buffer e depois +-1 segundo escrever na variáver o conteudo do buffer, daria tempo da pistola escrever todo o código na memória, e se o usuario digitasse ficaria transparente pois seria um segundo de retardo.

FWHX 8.4

XHARBOUR 1.1.0

PELE C 6.00.4

TELA EM .RES

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...