Por qual motivo TGets não mostram o ícone da Lupa

Hoje iremos responder essa pergunta, do motivo de um TGet não exibir a lupa quando vinculamos ele a um F3 (LookUp).

Se você já criou um TGet, vinculou ele a uma consulta padrão, e ele exibiu aquela interrogação no lugar da lupa, provavelmente já se deparou com essa dúvida.

Um dos alunos também postou em nosso grupo do WhatsApp, então eu decidi fazer uns testes e preparar esse artigo.

O que acontece, é que quem controla esse ícone é o atributo lHasButton, e você deve passar como .T. logo ao acionar o método New do TGet, para que ele entenda que irá exibir o ícone, do contrário ele vai exibir uma interrogação ou um trema.

Abaixo um print de exemplo com um TGet normal, um TGet normal usando CSS, um TGet com lHasButton e um TGet com lHasButton e CSS.

Exemplo de TGets usando CSS e lupas

E abaixo o código fonte desenvolvido do exemplo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zTstTGet
Funcao com tela customizada usando a classe TDialog que foi gerado pelo PDialogMaker
@type  Function
@author Atilio
@since 17/06/2022 
@see https://atiliosistemas.com/portfolio/pdialogmaker/
@obs Obrigado por usar um aplicativo da Atilio Sistemas
/*/

User Function zTstTGet()
    If Select("SX2") == 0
        RPCSetEnv("99", "01", "Administrador", "", "")
    EndIf

    fMontaTela()
Return

Static Function fMontaTela()
    Local aArea         := FWGetArea()
    Local nCorFundo     := RGB(238, 238, 238)
    Local nJanAltura    := 281
    Local nJanLargur    := 358 
    Local cJanTitulo    := 'Exemplo 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 oSayObj0 
    Private cSayObj0    := 'Normal'  
    //objeto1 
    Private oGetObj1 
    Private xGetObj1    := Space(TamSX3('B1_COD')[1])
    //objeto2 
    Private oSayObj2 
    Private cSayObj2    := 'Com CSS'  
    //objeto3 
    Private oGetObj3 
    Private xGetObj3    := Space(TamSX3('B1_COD')[1])
    //objeto4 
    Private oSayObj4 
    Private cSayObj4    := 'Com lHasButton'  
    //objeto5 
    Private oGetObj5 
    Private xGetObj5    := Space(TamSX3('B1_COD')[1])
    //objeto6 
    Private oSayObj6 
    Private cSayObj6    := 'Com lHasButton e CSS'  
    //objeto7 
    Private oGetObj7 
    Private xGetObj7    := Space(TamSX3('B1_COD')[1])
    //objeto8 
    Private oBtnObj8 
    Private cBtnObj8    := 'Confirmar'  
    Private bBtnObj8    := {|| MsgInfo('Clicou no OK', 'Atenção')}  
    
    //Cria a dialog
    oDialogPvt := TDialog():New(0, 0, nJanAltura, nJanLargur, cJanTitulo, , , , , , nCorFundo, , , lDimPixels)
    
        //objeto0 - usando a classe TSay
        nObjLinha := 4
        nObjColun := 4
        nObjLargu := 70
        nObjAltur := 6
        oSayObj0  := TSay():New(nObjLinha, nObjColun, {|| cSayObj0}, oDialogPvt, /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)

        //objeto1 - usando a classe TGet
        nObjLinha := 3
        nObjColun := 74
        nObjLargu := 100
        nObjAltur := 10
        oGetObj1  := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj1 := u, xGetObj1)}, oDialogPvt, nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels)
        oGetObj1:cF3        := 'SB1'

        //objeto2 - usando a classe TSay
        nObjLinha := 19
        nObjColun := 4
        nObjLargu := 70
        nObjAltur := 6
        oSayObj2  := TSay():New(nObjLinha, nObjColun, {|| cSayObj2}, oDialogPvt, /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)

        //objeto3 - usando a classe TGet
        nObjLinha := 18
        nObjColun := 74
        nObjLargu := 100
        nObjAltur := 10
        oGetObj3  := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj3 := u, xGetObj3)}, oDialogPvt, nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels)
        oGetObj3:cF3        := 'SB1'
        oGetObj3:SetCSS("TGet{ color: #000000; selection-background-color: #369CB5;    background-color: #FFFFFF;     padding-left: 3px;     padding-right: 3px;     border-top-left-radius:3px;    border-bottom-left-radius:3px;    border: 1px solid #C5C9CA;    border-right: 0px; }QPushButton{ border: 1px solid #C5C9CA;   background-color: #FFFFFF;    border-left: 0px;   border-top-right-radius:3px;   border-bottom-right-radius:3px;    outline: none; }TGet:disabled { color: #000000;     border: 1px solid #E8EBF21;    border-right: 0px;    border-top-right-radius: 0px;    border-bottom-right-radius: 0px;    background-color: #E8EBF1;}QPushButton:disabled{ background-color: #E8EBF1; }tLabel{color: #000000;}")

        //objeto4 - usando a classe TSay
        nObjLinha := 34
        nObjColun := 4
        nObjLargu := 70
        nObjAltur := 6
        oSayObj4  := TSay():New(nObjLinha, nObjColun, {|| cSayObj4}, oDialogPvt, /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)

        //objeto5 - usando a classe TGet
        nObjLinha := 33
        nObjColun := 74
        nObjLargu := 100
        nObjAltur := 10
        lHasButton := .T.
        oGetObj5  := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj5 := u, xGetObj5)}, oDialogPvt, nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels, /*uParam15*/, /*uParam16*/, /*bWhen*/, /*uParam18*/, /*uParam19*/, /*bChange*/, /*lReadOnly*/, /*lPassword*/, /*uParam23*/, /*cReadVar*/, /*uParam25*/, /*uParam26*/, /*uParam27*/, lHasButton)
        oGetObj5:cF3        := 'SB1'

        //objeto6 - usando a classe TSay
        nObjLinha := 49
        nObjColun := 4
        nObjLargu := 70
        nObjAltur := 6
        oSayObj6  := TSay():New(nObjLinha, nObjColun, {|| cSayObj6}, oDialogPvt, /*cPicture*/, oFontPadrao, , , , lDimPixels, /*nClrText*/, /*nClrBack*/, nObjLargu, nObjAltur, , , , , , /*lHTML*/)

        //objeto7 - usando a classe TGet
        nObjLinha := 48
        nObjColun := 74
        nObjLargu := 100
        nObjAltur := 10
        lHasButton := .T.
        oGetObj7  := TGet():New(nObjLinha, nObjColun, {|u| Iif(PCount() > 0 , xGetObj7 := u, xGetObj7)}, oDialogPvt, nObjLargu, nObjAltur, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontPadrao, , , lDimPixels, /*uParam15*/, /*uParam16*/, /*bWhen*/, /*uParam18*/, /*uParam19*/, /*bChange*/, /*lReadOnly*/, /*lPassword*/, /*uParam23*/, /*cReadVar*/, /*uParam25*/, /*uParam26*/, /*uParam27*/, lHasButton)
        oGetObj7:cF3        := 'SB1'
        oGetObj7:SetCSS("TGet{ color: #000000; selection-background-color: #369CB5;    background-color: #FFFFFF;     padding-left: 3px;     padding-right: 3px;     border-top-left-radius:3px;    border-bottom-left-radius:3px;    border: 1px solid #C5C9CA;    border-right: 0px; }QPushButton{ border: 1px solid #C5C9CA;   background-color: #FFFFFF;    border-left: 0px;   border-top-right-radius:3px;   border-bottom-right-radius:3px;    outline: none; }TGet:disabled { color: #000000;     border: 1px solid #E8EBF21;    border-right: 0px;    border-top-right-radius: 0px;    border-bottom-right-radius: 0px;    background-color: #E8EBF1;}QPushButton:disabled{ background-color: #E8EBF1; }tLabel{color: #000000;}")


        //objeto8 - usando a classe TButton
        nObjLinha := 116
        nObjColun := 2
        nObjLargu := (nJanLargur/2) - 2
        nObjAltur := 15
        oBtnObj8  := TButton():New(nObjLinha, nObjColun, cBtnObj8, oDialogPvt, bBtnObj8, nObjLargu, nObjAltur, , oFontPadrao, , lDimPixels)
    
    //Ativa e exibe a janela
    oDialogPvt:Activate(, , , lCentraliz, , , bBlocoIni)
    
    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação