Como Aumentar o tamanho da fonte de uma MsNewGetDados

Hoje trago uma dica para deixar grids com MsNewGetDados “mais bonitinhas” rs.

Antes de começarmos o artigo, pessoal a classe MsNewGetDados foi descontinuada, não recomendo criar rotinas do zero com ela, para isso tente usar por exemplo a FwBrowse e/ou MVC, nesse link tem exemplos – Migrando do MSNewGetDados para FWBrowse e MVC.

Porém, como existem inúmeros fontes legados e antigos para manutenção, às vezes não temos tempo de tirar de uma classe e colocar em outra, então o artigo de hoje foi pensando nisso.

As versões mais novas do Protheus, utilizam CSS para os componentes gráficos, então o que eu fiz para descobrir em como aumentar a fonte, foi utilizar o método GetCSS() em uma FWBrowse, copiar o conteúdo e achar os pontos de alteração.

A partir disso, usei o método SetCSS() na grid criada com MsNewGetDados, informando QHeaderView (para deixar o cabeçalho negrito) e QTableView (para aumentar a fonte).

Abaixo um print do antes:

MSNewGetDados com a fonte original

Abaixo um print do depois:

MSNewGetDados com a fonte maior

E abaixo o código de exemplo desenvolvido:

//Bibliotecas
#Include "Protheus.ch"
#Include "TopConn.ch"
  
//Legendas
Static oBmpVerde    := LoadBitmap( GetResources(), "BR_VERDE")
Static oBmpVermelho := LoadBitmap( GetResources(), "BR_VERMELHO")
Static oBmpPreto    := LoadBitmap( GetResources(), "BR_PRETO")
  
/*/{Protheus.doc} zMsNew
Função para ver os grupos de produto
@author Atilio
@since 24/05/2021
@version 1.0
@type function
@obs Exemplo baseado no link https://terminaldeinformacao.com/knowledgebase/msnewgetdados/
    O ideal é fazer grids com FWBrowse, porém se precisar adaptar algum fonte legado, 
    pode-se basear no exemplo abaixo
 
    Ah, se você quiser copiar o CSS de outro componente, use o método GetCSS() e salve em um txt
    Depois copie esse txt e coloque no SetCSS do seu componente
/*/
  
User Function zMsNew()
    Local aArea := GetArea()
    //Objetos da Janela
    Private oDlgPvt
    Private oMsGetSBM
    Private aHeadSBM := {}
    Private aColsSBM := {}
    Private oBtnSalv
    Private oBtnFech
    Private oBtnLege
    //Tamanho da Janela
    Private    nJanLarg    := 700
    Private    nJanAltu    := 500
    //Fontes
    Private    cFontUti   := "Tahoma"
    Private    oFontAno   := TFont():New(cFontUti,,-38)
    Private    oFontSub   := TFont():New(cFontUti,,-20)
    Private    oFontSubN  := TFont():New(cFontUti,,-20,,.T.)
    Private    oFontBtn   := TFont():New(cFontUti,,-14)
      
    //Criando o cabeçalho da Grid
    //              Título               Campo        Máscara                        Tamanho                   Decimal                   Valid               Usado  Tipo F3     Combo
    aAdd(aHeadSBM, {"",                  "XX_COR",    "@BMP",                        002,                      0,                        ".F.",              "   ", "C", "",    "V",     "",      "",        "", "V"})
    aAdd(aHeadSBM, {"Código",            "BM_GRUPO",  "",                            TamSX3("BM_GRUPO")[01],   0,                        ".T.",              ".T.", "C", "",    ""} )
    aAdd(aHeadSBM, {"Descrição",         "BM_DESC",   "",                            TamSX3("BM_DESC")[01],    0,                        "NaoVazio()",       ".T.", "C", "",    ""} )
    aAdd(aHeadSBM, {"Status Grupo",      "BM_STATUS", "",                            TamSX3("BM_STATUS")[01],  0,                        "PERTENCE('1234')", ".T.", "C", "",    "1=Novo;2=Remanufaturado;3=Reciclado;4=Usado"} )
    aAdd(aHeadSBM, {"Procedencia",       "BM_PROORI", "",                            TamSX3("BM_PROORI")[01],  0,                        "Pertence('01')",   ".T.", "C", "",    "1=Original;0=Nao Original"} )
    aAdd(aHeadSBM, {"Total de Produtos", "XX_TOTAL",  "@E 999,999,999,999,999,999",  018,                      0,                        ".T.",              ".T.", "N", "",    ""} )
    aAdd(aHeadSBM, {"SBM Recno",         "XX_RECNO",  "@E 999,999,999,999,999,999",  018,                      0,                        ".T.",              ".T.", "N", "",    ""} )
  
    Processa({|| fCarAcols()}, "Processando")
  
    //Criação da tela com os dados que serão informados
    DEFINE MSDIALOG oDlgPvt TITLE "Grupos de Produto" FROM 000, 000  TO nJanAltu, nJanLarg COLORS 0, 16777215 PIXEL
        //Labels gerais
        @ 004, 003 SAY "TST"                SIZE 200, 030 FONT oFontAno  OF oDlgPvt COLORS RGB(149,179,215) PIXEL
        @ 004, 050 SAY "Listagem de"        SIZE 200, 030 FONT oFontSub  OF oDlgPvt COLORS RGB(031,073,125) PIXEL
        @ 014, 050 SAY "Grupos de Produtos" SIZE 200, 030 FONT oFontSubN OF oDlgPvt COLORS RGB(031,073,125) PIXEL
          
        //Botões
        @ 006, (nJanLarg/2-001)-(0052*01) BUTTON oBtnFech  PROMPT "Fechar"        SIZE 050, 018 OF oDlgPvt ACTION (oDlgPvt:End())                               FONT oFontBtn PIXEL
        @ 006, (nJanLarg/2-001)-(0052*02) BUTTON oBtnLege  PROMPT "Legenda"       SIZE 050, 018 OF oDlgPvt ACTION (fLegenda())                                  FONT oFontBtn PIXEL
        @ 006, (nJanLarg/2-001)-(0052*03) BUTTON oBtnSalv  PROMPT "Salvar"        SIZE 050, 018 OF oDlgPvt ACTION (fSalvar())                                   FONT oFontBtn PIXEL
          
        //Grid dos grupos
        oMsGetSBM := MsNewGetDados():New(    029,;                //nTop      - Linha Inicial
                                            003,;                //nLeft     - Coluna Inicial
                                            (nJanAltu/2)-3,;     //nBottom   - Linha Final
                                            (nJanLarg/2)-3,;     //nRight    - Coluna Final
                                            GD_INSERT + GD_UPDATE + GD_DELETE,;                   //nStyle    - Estilos para edição da Grid (GD_INSERT = Inclusão de Linha; GD_UPDATE = Alteração de Linhas; GD_DELETE = Exclusão de Linhas)
                                            "AllwaysTrue()",;    //cLinhaOk  - Validação da linha
                                            ,;                   //cTudoOk   - Validação de todas as linhas
                                            "",;                 //cIniCpos  - Função para inicialização de campos
                                            ,;                   //aAlter    - Colunas que podem ser alteradas
                                            ,;                   //nFreeze   - Número da coluna que será congelada
                                            9999,;               //nMax      - Máximo de Linhas
                                            ,;                   //cFieldOK  - Validação da coluna
                                            ,;                   //cSuperDel - Validação ao apertar '+'
                                            ,;                   //cDelOk    - Validação na exclusão da linha
                                            oDlgPvt,;            //oWnd      - Janela que é a dona da grid
                                            aHeadSBM,;           //aHeader   - Cabeçalho da Grid
                                            aColsSBM)            //aCols     - Dados da Grid
        oMsGetSBM:oBrowse:SetCSS(;
            "QHeaderView::Section {font-weight: bold;} " +; //Cabeçallho
            "QTableView { font-size: 14px; } "; //Grid
        )
          
    ACTIVATE MSDIALOG oDlgPvt CENTERED
      
    RestArea(aArea)
Return
  
/*------------------------------------------------*
 | Func.: fCarAcols                               |
 | Desc.: Função que carrega o aCols              |
 *------------------------------------------------*/
  
Static Function fCarAcols()
    Local aArea  := GetArea()
    Local cQry   := ""
    Local nAtual := 0
    Local nTotal := 0
    Local oBmpAux
      
    //Seleciona dados do documento de entrada
    cQry := " SELECT "                                                  + CRLF
    cQry += "     BM_GRUPO, "                                           + CRLF
    cQry += "     BM_DESC, "                                            + CRLF
    cQry += "     BM_STATUS, "                                          + CRLF
    cQry += "     BM_PROORI, "                                          + CRLF
    cQry += "     ( "                                                   + CRLF
    cQry += "         SELECT "                                          + CRLF
    cQry += "             COUNT(*) "                                    + CRLF
    cQry += "         FROM "                                            + CRLF
    cQry += "             " + RetSQLName('SB1') + " SB1 "               + CRLF
    cQry += "         WHERE "                                           + CRLF
    cQry += "             B1_FILIAL = '" + FWxFilial('SB1') + "' "      + CRLF
    cQry += "             AND B1_GRUPO = BM_GRUPO "                     + CRLF
    cQry += "             AND B1_MSBLQL != '1' "                        + CRLF
    cQry += "             AND SB1.D_E_L_E_T_ = ' ' "                    + CRLF
    cQry += "     ) AS TOT_PROD, "                                      + CRLF
    cQry += "     SBM.R_E_C_N_O_ AS SBMREC "                            + CRLF
    cQry += " FROM "                                                    + CRLF
    cQry += "     " + RetSQLName('SBM') + " SBM "                       + CRLF
    cQry += " WHERE "                                                   + CRLF
    cQry += "     BM_FILIAL = '" + FWxFilial('SBM') + "' "              + CRLF
    cQry += "     AND SBM.D_E_L_E_T_ = ' ' "                            + CRLF
    cQry += " ORDER BY "                                                + CRLF
    cQry += "     BM_GRUPO "                                            + CRLF
    TCQuery cQry New Alias "QRY_SBM"
      
    //Setando o tamanho da régua
    Count To nTotal
    ProcRegua(nTotal)
      
    //Enquanto houver dados
    QRY_SBM->(DbGoTop())
    While ! QRY_SBM->(EoF())
      
        //Atualizar régua de processamento
        nAtual++
        IncProc("Adicionando " + Alltrim(QRY_SBM->BM_GRUPO) + " (" + cValToChar(nAtual) + " de " + cValToChar(nTotal) + ")...")
          
        //Definindo a legenda padrão como preto
        oBmpAux := oBmpPreto
          
        //Se for Original será verde
        If QRY_SBM->BM_PROORI == '1'
            oBmpAux := oBmpVerde
          
        //Senão, se for Não Original, será vermelho
        ElseIf QRY_SBM->BM_PROORI == '0'
            oBmpAux := oBmpVermelho
        EndIf
          
        //Adiciona o item no aCols
        aAdd(aColsSBM, { ;
            oBmpAux,;
            QRY_SBM->BM_GRUPO,;
            QRY_SBM->BM_DESC,;
            QRY_SBM->BM_STATUS,;
            QRY_SBM->BM_PROORI,;
            QRY_SBM->TOT_PROD,;
            QRY_SBM->SBMREC,;
            .F.;
        })
          
        QRY_SBM->(DbSkip())
    EndDo
    QRY_SBM->(DbCloseArea())
      
    RestArea(aArea)
Return
  
/*--------------------------------------------------------*
 | Func.: fLegenda                                        |
 | Desc.: Função que mostra uma descrição das legendas    |
 *--------------------------------------------------------*/
  
Static Function fLegenda()
    Local aLegenda := {}
      
    aAdd(aLegenda, {"BR_PRETO",    "Sem Classificação"})    
    aAdd(aLegenda, {"BR_VERDE",    "Original"})
    aAdd(aLegenda, {"BR_VERMELHO", "Não Original"})
      
    BrwLegenda("Grupo de Produtos", "Legenda", aLegenda)
Return
  
/*--------------------------------------------------------*
 | Func.: fSalvar                                         |
 | Desc.: Função que percorre as linhas e faz a gravação  |
 *--------------------------------------------------------*/
  
Static Function fSalvar()
    Local aColsAux := oMsGetSBM:aCols
    Local nPosCod  := aScan(aHeadSBM, {|x| Alltrim(x[2]) == "BM_GRUPO"})
    Local nPosDes  := aScan(aHeadSBM, {|x| Alltrim(x[2]) == "BM_DESC"})
    Local nPosSta  := aScan(aHeadSBM, {|x| Alltrim(x[2]) == "BM_STATUS"})
    Local nPosPro  := aScan(aHeadSBM, {|x| Alltrim(x[2]) == "BM_PROORI"})
    Local nPosTot  := aScan(aHeadSBM, {|x| Alltrim(x[2]) == "XX_TOTAL"})
    Local nPosRec  := aScan(aHeadSBM, {|x| Alltrim(x[2]) == "XX_RECNO"})
    Local nPosDel  := Len(aHeadSBM) + 1
    Local nLinha   := 0
      
    DbSelectArea('SBM')
      
    //Percorrendo todas as linhas
    For nLinha := 1 To Len(aColsAux)
      
        //Posiciona no registro
        If aColsAux[nLinha][nPosRec] != 0
            SBM->(DbGoTo(aColsAux[nLinha][nPosRec]))
        EndIf
          
        //Se a linha estiver excluída
        If aColsAux[nLinha][nPosDel]
              
            //Se não for uma linha nova
            If aColsAux[nLinha][nPosRec] != 0
              
                //Se não tiver produtos, ai prossegue com exclusão
                If aColsAux[nLinha][nPosTot] == 0
                    RecLock("SBM", .F.)
                        DbDelete()
                    SBM->(MsUnlock())
                EndIf
                  
            EndIf
              
        //Se a linha for incluída
        ElseIf aColsAux[nLinha][nPosRec] == 0
            RecLock('SBM', .T.)
                SBM->BM_GRUPO  := aColsAux[nLinha][nPosCod]
                SBM->BM_DESC   := aColsAux[nLinha][nPosDes]
                SBM->BM_STATUS := aColsAux[nLinha][nPosSta]
                SBM->BM_PROORI := aColsAux[nLinha][nPosPro]
            SBM->(MsUnlock())
              
        //Senão, será alteração
        Else
            RecLock('SBM', .F.)
                SBM->BM_DESC   := aColsAux[nLinha][nPosDes]
                SBM->BM_STATUS := aColsAux[nLinha][nPosSta]
                SBM->BM_PROORI := aColsAux[nLinha][nPosPro]
            SBM->(MsUnlock())
        EndIf
          
    Next
      
    MsgInfo("Manipulações finalizadas!", "Atenção")
    oDlgPvt:End()
Return

Update 2023:

Criamos uma função, chamada zCSSGrid, onde você pode acionar diretamente após criar sua grid, da seguinte forma:

oSuaGrid:oBrowse:SetCSS(u_zCSSGrid())

Abaixo o código fonte completo da zCSSGrid:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zCSSGrid
Altera o tamanho do texto usado nas grids antigas (MsNewGetDados e MsSelect)
@type  Function
@author Atilio
@since 18/08/2021
@version version
@param nTamFonte, Numeric, Tamanho da fonte em pixels na grid
@example
/*/
User Function zCSSGrid(nTamFonte)
    Local cCSSGrid := ""
    Default nTamFonte := 14
    
	cCSSGrid += "QHeaderView::section {" + CRLF
	cCSSGrid += "	background-color: #6E7D81;" + CRLF
	cCSSGrid += "	border: 1px solid #646769;" + CRLF
	cCSSGrid += "	border-bottom-color: #4B4B4B;" + CRLF
	cCSSGrid += "	border-right-color: #3F4548;" + CRLF
	cCSSGrid += "	border-left-color: #90989D;" + CRLF
	cCSSGrid += "	color: #FFFFFF;" + CRLF
	cCSSGrid += "	font-family: arial;" + CRLF
	cCSSGrid += "	height: 27px;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QHeaderView::section:pressed {" + CRLF
	cCSSGrid += "	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #485154, stop: 1 #6D7C80);" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QTableView {" + CRLF
	cCSSGrid += "	selection-background-color: #1C9DBD;" + CRLF
	cCSSGrid += "	selection-color: #FFFFFF;" + CRLF
	cCSSGrid += "	alternate-background-color: #B2CBE7;" + CRLF
	cCSSGrid += "	background: #FFFFFF;" + CRLF
	cCSSGrid += "	color: #000000;" + CRLF
	cCSSGrid += "	font-size: " + cValToChar(nTamFonte) + "px;" + CRLF
	//cCSSGrid += "	border: 1px solid #C5C9CA;" + CRLF
	//cCSSGrid += "	border-top: 0px;" + CRLF
	//cCSSGrid += "	border-left: 0px;" + CRLF
	//cCSSGrid += "	border-right: 0px;" + CRLF
	cCSSGrid += "	border: none;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar:horizontal {" + CRLF
	cCSSGrid += "	background-color: #F2F2F2;" + CRLF
	cCSSGrid += "	border: 1px solid #C5C9CA;" + CRLF
	cCSSGrid += "	margin: 0 15px 0px 16px;" + CRLF
	cCSSGrid += "	max-height: 16px;" + CRLF
	cCSSGrid += "	min-height: 16px;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-page:horizontal," + CRLF
	cCSSGrid += "QScrollBar::sub-page:horizontal {" + CRLF
	cCSSGrid += "	background: #F2F2F2;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::handle:horizontal {" + CRLF
	cCSSGrid += "	background-color: #B2B2B2;" + CRLF
	cCSSGrid += "	border: 3px solid #F2F2F2;" + CRLF
	cCSSGrid += "	border-radius: 7px;" + CRLF
	cCSSGrid += "	min-width: 20px;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-line:horizontal {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_hrz_btn_rgt_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "	border: 1px solid black;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-line:horizontal:pressed {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_hrz_btn_rgt_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-line:horizontal {" + CRLF
	cCSSGrid += "	border-top-width: 2px;" + CRLF
	cCSSGrid += "	border-right-width: 2px;" + CRLF
	cCSSGrid += "	border-bottom-width: 2px;" + CRLF
	cCSSGrid += "	border-left-width: 2px;" + CRLF
	cCSSGrid += "	width: 13px;" + CRLF
	cCSSGrid += "	subcontrol-position: right;" + CRLF
	cCSSGrid += "	subcontrol-origin: margin;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::sub-line:horizontal {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_hrz_btn_lft_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::sub-line:horizontal:pressed {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_hrz_btn_lft_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::sub-line:horizontal {" + CRLF
	cCSSGrid += "	border-top-width: 2px;" + CRLF
	cCSSGrid += "	border-right-width: 2px;" + CRLF
	cCSSGrid += "	border-bottom-width: 2px;" + CRLF
	cCSSGrid += "	border-left-width: 2px;" + CRLF
	cCSSGrid += "	width: 13px;" + CRLF
	cCSSGrid += "	subcontrol-position: left;" + CRLF
	cCSSGrid += "	subcontrol-origin: margin;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar:vertical {" + CRLF
	cCSSGrid += "	background-color: #F2F2F2;" + CRLF
	cCSSGrid += "	border-top-width: 0px;" + CRLF
	cCSSGrid += "	border-right-width: 0px;" + CRLF
	cCSSGrid += "	border-bottom-width: 0px;" + CRLF
	cCSSGrid += "	border-left-width: 0px;" + CRLF
	cCSSGrid += "	margin: 15px 0px 16px 0px;" + CRLF
	cCSSGrid += "	max-width: 16px;" + CRLF
	cCSSGrid += "	min-width: 16px;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-page:vertical," + CRLF
	cCSSGrid += "QScrollBar::sub-page:vertical {" + CRLF
	cCSSGrid += "	background: #F2F2F2;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::handle:vertical {" + CRLF
	cCSSGrid += "	background-color: #B2B2B2;" + CRLF
	cCSSGrid += "	border: 3px solid #F2F2F2;" + CRLF
	cCSSGrid += "	border-radius: 7px;" + CRLF
	cCSSGrid += "	min-height: 20px;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-line:vertical {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_vrt_btn_btm_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-line:vertical:pressed {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_vrt_btn_btm_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::add-line:vertical {" + CRLF
	cCSSGrid += "	border-top-width: 2px;" + CRLF
	cCSSGrid += "	border-right-width: 2px;" + CRLF
	cCSSGrid += "	border-bottom-width: 2px;" + CRLF
	cCSSGrid += "	border-left-width: 2px;" + CRLF
	cCSSGrid += "	height: 13px;" + CRLF
	cCSSGrid += "	subcontrol-position: bottom;" + CRLF
	cCSSGrid += "	subcontrol-origin: margin;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::sub-line:vertical {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_vrt_btn_top_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::sub-line:vertical:pressed {" + CRLF
	cCSSGrid += "	border-image: url(rpo:fwskin_scroll_vrt_btn_top_nml.png) 2 2 2 2 stretch;" + CRLF
	cCSSGrid += "}" + CRLF
	cCSSGrid += "" + CRLF
	cCSSGrid += "QScrollBar::sub-line:vertical {" + CRLF
	cCSSGrid += "	border-top-width: 2px;" + CRLF
	cCSSGrid += "	border-right-width: 2px;" + CRLF
	cCSSGrid += "	border-bottom-width: 2px;" + CRLF
	cCSSGrid += "	border-left-width: 2px;" + CRLF
	cCSSGrid += "	height: 13px;" + CRLF
	cCSSGrid += "	subcontrol-position: top;" + CRLF
	cCSSGrid += "	subcontrol-origin: margin;" + CRLF
	cCSSGrid += "}" + CRLF
Return cCSSGrid

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.

2 Responses

  1. Wanderson' disse:

    Bom dia Dan,

    Ótimo post.

Deixe uma resposta para Wanderson'Cancelar resposta

Terminal de Informação