Como mudar a cor dentro de uma aba de um TFolder | Ti Responde 0191

No vídeo de hoje, vamos demonstrar em como mudar a cor de fundo dentro das abas de um TFolder.

A dúvida de hoje, nos perguntaram, como poderia ser alterado a cor de fundo dos conteúdos das abas em um TFolder.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar em como usar o SetCSS do TPanelCSS.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "tlpp-core.th"
#Include "TOTVS.ch" //devido a função RGB()

//Declaração da namespace
Namespace custom.terminal.youtube

/*/{Protheus.doc} User Function video0191
Exemplo de mudança de cor nas abas
@type Function
@author Atilio
@since 09/07/2024
@see https://tdn.totvs.com/display/tec/TFolder
@example custom.terminal.youtube.u_video0191()
/*/

User Function video0191()
    Local aArea                := FWGetArea()                           As Array
    Local nBackgroundColor     := RGB(238, 238, 238)                    As Numeric
    Local nDialogHeight        := 248                                   As Numeric
    Local nDialogWidth         := 655                                   As Numeric
    Local cDialogTitle         := 'Exemplo TFolder'                     As Character
    Local lUsePixels           := .T.                                   As Logical
    Local lCentered            := .T.                                   As Logical
    Local nObjectRow           := 0                                     As Numeric
    Local nObjectColumn        := 0                                     As Numeric
    Local nObjectWidth         := 0                                     As Numeric
    Local nObjectHeight        := 0                                     As Numeric
    Private cFont              := 'Tahoma'                              As Character
    Private oFontDefault       := TFont():New(cFont, , -12)             As Object
    Private oTestDialog                                                 As Object
    Private bInitBlock         := {|| /*fSuaFuncao()*/ }                As CodeBlock
    Private oConfirmButton                                              As Object
    Private cConfirmButton     := 'Confirmar'                           As Character
    Private bConfirmButton     := {|| Alert("Clicou no Confirmar!")}    As CodeBlock
    Private oSayFieldA                                                  As Object
    Private cSayFieldA         := 'Campo A:'                            As Character
    Private oGetFieldA                                                  As Object
    Private cGetFieldA         := Space(10)                             As Character
    Private oSayFieldB                                                  As Object
    Private cSayFieldB         := 'Campo B:'                            As Character
    Private oGetFieldB                                                  As Object
    Private cGetFieldB         := Space(10)                             As Character
    Private oSayFieldC                                                  As Object
    Private cSayFieldC         := 'Campo C:'                            As Character
    Private oGetFieldC                                                  As Object
    Private cGetFieldC         := Space(10)                             As Character
    Private oFolder                                                     As Object
    Private aTabs              := {"Cadastro", "Complemento", "Outros"} As Array
    
    //Cria a dialog
    oTestDialog := TDialog():New(0, 0, nDialogHeight, nDialogWidth, cDialogTitle, , , , , , nBackgroundColor, , , lUsePixels)
    
        //objeto0 - usando a classe TButton
        nObjectRow := 106
        nObjectColumn := 5
        nObjectWidth := 75
        nObjectHeight := 15
        oConfirmButton  := TButton():New(nObjectRow, nObjectColumn, cConfirmButton, oTestDialog, bConfirmButton, nObjectWidth, nObjectHeight, , oFontDefault, , lUsePixels)

        //Cria as abas
        oFolder := TFolder():New(001, 001, aTabs, /*aDialogs*/, oTestDialog, /*nOption*/, /*nClrFore*/, /*uParam8*/, lUsePixels, /*uParam10*/, (nDialogWidth/2)-1, (nDialogHeight/2)-30)

        /* Aba 1 */

            //objeto1 - usando a classe TSay
            nObjectRow := 7
            nObjectColumn := 2
            nObjectWidth := 28
            nObjectHeight := 6
            oSayFieldA  := TSay():New(nObjectRow, nObjectColumn, {|| cSayFieldA}, oFolder:aDialogs[1], /*cPicture*/, oFontDefault, , , , lUsePixels, /*nClrText*/, /*nClrBack*/, nObjectWidth, nObjectHeight, , , , , , /*lHTML*/)

            //objeto2 - usando a classe TGet
            nObjectRow := 5
            nObjectColumn := 37
            nObjectWidth := 50
            nObjectHeight := 10
            oGetFieldA  := TGet():New(nObjectRow, nObjectColumn, {|u| Iif(PCount() > 0 , cGetFieldA := u, cGetFieldA)}, oFolder:aDialogs[1], nObjectWidth, nObjectHeight, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontDefault, , , lUsePixels)
            oGetFieldA:Picture      := '@!'                        //Mascara / Picture do campo

        /* Aba 2 */

            //objeto1 - usando a classe TSay
            nObjectRow := 7
            nObjectColumn := 2
            nObjectWidth := 28
            nObjectHeight := 6
            oSayFieldB  := TSay():New(nObjectRow, nObjectColumn, {|| cSayFieldB}, oFolder:aDialogs[2], /*cPicture*/, oFontDefault, , , , lUsePixels, /*nClrText*/, /*nClrBack*/, nObjectWidth, nObjectHeight, , , , , , /*lHTML*/)

            //objeto2 - usando a classe TGet
            nObjectRow := 5
            nObjectColumn := 37
            nObjectWidth := 100
            nObjectHeight := 10
            oGetFieldB  := TGet():New(nObjectRow, nObjectColumn, {|u| Iif(PCount() > 0 , cGetFieldB := u, cGetFieldB)}, oFolder:aDialogs[2], nObjectWidth, nObjectHeight, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontDefault, , , lUsePixels)
            oGetFieldB:Picture      := '@!'                        //Mascara / Picture do campo

        /* Aba 3 */

            //objeto1 - usando a classe TSay
            nObjectRow := 7
            nObjectColumn := 2
            nObjectWidth := 28
            nObjectHeight := 6
            oSayFieldC  := TSay():New(nObjectRow, nObjectColumn, {|| cSayFieldC}, oFolder:aDialogs[3], /*cPicture*/, oFontDefault, , , , lUsePixels, /*nClrText*/, /*nClrBack*/, nObjectWidth, nObjectHeight, , , , , , /*lHTML*/)

            //objeto2 - usando a classe TGet
            nObjectRow := 5
            nObjectColumn := 37
            nObjectWidth := 150
            nObjectHeight := 10
            oGetFieldC  := TGet():New(nObjectRow, nObjectColumn, {|u| Iif(PCount() > 0 , cGetFieldC := u, cGetFieldC)}, oFolder:aDialogs[3], nObjectWidth, nObjectHeight, /*cPict*/, /*bValid*/, /*nClrFore*/, /*nClrBack*/, oFontDefault, , , lUsePixels)
            oGetFieldC:Picture      := '@!'                        //Mascara / Picture do campo

        //Atualiza as cores das abas conforme compatibilidade com a TPanelCSS - https://tdn.totvs.com/display/tec/TPanelCSS
        oFolder:aDialogs[1]:SetCss("QFrame{ background-color:#FFE5E9 }")
        oFolder:aDialogs[2]:SetCss("QFrame{ background-color:#E7FFE5 }")
        oFolder:aDialogs[3]:SetCss("QFrame{ background-color:#E5ECFF }")

    //Ativa e exibe a janela
    oTestDialog:Activate(, , , lCentered, , , bInitBlock)
    
    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