No vídeo de hoje vamos demonstrar em como fazer um TGet posicionar nele mesmo (ideal para telas com leitura de código de barra).
Essa dúvida foi de um aluno, o grande Rafael, onde ele queria fazer uma tela com leitura de código de barras.
Ai como ele poderia fazer com que o TGet (ou MSGET), posicionasse nele mesmo? Então demonstramos isso, criando um segundo TGet que reposiciona o foco.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas #Include 'TOTVS.ch' /*/{Protheus.doc} User Function zVid0043 Funcao com tela customizada usando a classe TDialog que foi gerado pelo PDialogMaker @type Function @author Atilio @since 28/07/2022 @see https://atiliosistemas.com/portfolio/pdialogmaker/ @obs Obrigado por usar um aplicativo da Atilio Sistemas /*/ User Function zVid0043() Local aArea := FWGetArea() Local nCorFundo := RGB(204, 255, 204) Local nJanAltura := 118 Local nJanLargur := 221 Local cJanTitulo := 'Teste TGet' Local lDimPixels := .T. Local lCentraliz := .T. Local nObjLinha := 0 Local nObjColun := 0 Local nObjLargu := 0 Local nObjAltur := 0 Private cFontNome := 'Tahoma' Private oFontPadrao := TFont():New(cFontNome, , -12) Private oDialogPvt Private bBlocoIni := {|| /*fSuaFuncao()*/ } //Aqui voce pode acionar funcoes customizadas que irao ser acionadas ao abrir a dialog //objeto0 Private oGetObj0 Private xGetObj0 := Space(10) //Se o get for data para inicilizar use dToS(''), se for numerico inicie com 0 //objeto1 Private oSayObj1 Private cSayObj1 := '' //objeto2 Private oGetObj2 Private xGetObj2 := Space(10) //Se o get for data para inicilizar use dToS(''), se for numerico inicie com 0 //objeto3 Private oBtnObj3 Private cBtnObj3 := 'Fechar' Private bBtnObj3 := {|| oDialogPvt:End()} //Cria a dialog oDialogPvt := TDialog():New(0, 0, nJanAltura, nJanLargur, cJanTitulo, , , , , , nCorFundo, , , lDimPixels) //objeto0 - usando a classe TGet nObjLinha := 5 nObjColun := 5 nObjLargu := 100 nObjAltur := 10 oGetObj0 := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj0 := u, xGetObj0)}, oDialogPvt, nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels) oGetObj0:bValid := {|| fVldGet()} //objeto1 - usando a classe TSay nObjLinha := 18 nObjColun := 5 nObjLargu := 100 nObjAltur := 6 oSayObj1 := TSay():New(nObjLinha, nObjColun, {|| cSayObj1}, oDialogPvt, /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/) //objeto2 - usando a classe TGet nObjLinha := 84 nObjColun := 70 nObjLargu := 1 nObjAltur := 1 oGetObj2 := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj2 := u, xGetObj2)}, oDialogPvt, nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels) oGetObj2:bGotFocus:={|| oGetObj0:SetFocus()} //objeto3 - usando a classe TButton nObjLinha := 40 nObjColun := 5 nObjLargu := 50 nObjAltur := 15 oBtnObj3 := TButton():New(nObjLinha, nObjColun, cBtnObj3, oDialogPvt, bBtnObj3, nObjLargu, nObjAltur, , oFontPadrao, , lDimPixels) //Ativa e exibe a janela oDialogPvt:Activate(, , , lCentraliz, , , bBlocoIni) FWRestArea(aArea) Return Static Function fVldGet() Local lRet := .T. cSayObj1 := "Texto lido: '" + xGetObj0 + "'" Return lRet
Bom pessoal, por hoje é só.
Abraços e até a próxima.