Estou criando uma tela que o usuário irá digitar 13 ou 14 caracteres, dependendo do tipo de código de barras. Quando o usuário digita ("Bipa" com leitor) os 14 caracteres estou utilizando o oCodBar:bValid para realizar a validação e gravar as informações do código de barras X produto, na sequência eu já limpo o campo de entrada para receber um próximo código de barras.
Quando o usuário digita 13 caracteres eu estou utilizando oCodBar:bGetKey propriedade do Tget, conforme o link: https://tdn.engpro.totvs.com.br/pages/viewpage.action?pageId=344464907.
Então eu faço uma validação, se o campo já tem 13 posições e se o mesmo inicia com "789" por exemplo, se sim, eu valido se o código de barras existe e sigo com o processamento, no final eu quero limpar o campo que deu origem ao processamento, mas não está sendo possível. Gostaria de mais informações sobre o bGetKey com TGet.
oCodBar := TGet():New( 068, 048,{ |u| if(PCount()>0,cCodBar:=u,cCodBar) },oDlg2,100,013,"@!",,0,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,"","oCodBar",,,,,,,"Código de Barras",1,oFont ) oCodBar:SetCss(cCSSGet) oCodBar:lFocSel := .F. oCodBar:bValid := {|| iif( !Empty(cCodBar),Registrar(cCodBar,nQtde), ) } oCodBar:bGetKey := {|self,cText,nkey| texto(@self,@cText,@nkey,@oDlg2,@cCodBar,@nQtde)} oCodBar:SetFocus()
Quero limpar o campo cCodBar e atualiar a tela, interrompendo o bGetKey.
advpl TGet
Por favor, coloque o bloco de código utilizando as opções de formatações existentes, isso ajuda na leitura da pergunta. Acredito que você pode chegar no resultado esperado, primeiro, ajustando o parâmetro do TGet "oCodBar" para cCodBar (conforme docs TGET) e depois, no valid do campo validar o tamanho da váriavel cCodBar, processar o que for necessário e no final do processamento limpar o conteúdo da variável cCodBar.
— Lucas Briesemeister 18 de Jan de 2021