Tempo aproximado para leitura: 00:02:00 min
Dúvida
Estou utilizando a modificação de cores de linha em um TCBrowse, porém não consegui identificar qual a metodologia para obtenção dos códigos de cores.
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.80
Solução
O método SetBlkBackColor permite alterar a cor da linha do grid. Para isso, é possível definir um bloco de código que permite condicionar as cores de acordo com a regra específica. Os códigos seguem a tabela padrão de cores ADVPL, que seguem:
Tabela de cores
CLR_BLACK // RGB( 0, 0, 0 )
CLR_BLUE // RGB( 0, 0, 128 )
CLR_GREEN // RGB( 0, 128, 0 )
CLR_CYAN // RGB( 0, 128, 128 )
CLR_RED // RGB( 128, 0, 0 )
CLR_MAGENTA // RGB( 128, 0, 128 )
CLR_BROWN // RGB( 128, 128, 0 )
CLR_HGRAY // RGB( 192, 192, 192 )
CLR_LIGHTGRAY // RGB( 192, 192, 192 )
CLR_GRAY // RGB( 128, 128, 128 )
CLR_HBLUE // RGB( 0, 0, 255 )
CLR_HGREEN // RGB( 0, 255, 0 )
CLR_HCYAN // RGB( 0, 255, 255 )
CLR_HRED // RGB( 255, 0, 0 )
CLR_HMAGENTA // RGB( 255, 0, 255 )
CLR_YELLOW // RGB( 255, 255, 0 )
CLR_WHITE // RGB( 255, 255, 255 )
Segue exemplo básico de utilização:
#Include 'Protheus.ch'
#Include 'tbiconn.ch'
User Function TcBrCor()
Local oDlg
PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01'
DEFINE DIALOG oDlg TITLE "Exemplo SetBlkBackColor" FROM 180,180 TO 550,700 PIXEL
// Cria browse que receberá as colunas
DbSelectArea("SA1")
oBrowse:=TCBrowse():New(1,1,260,184,,,,oDlg,,,,,,,,,,,,.F.,"SA1",.T.,,.F.,,,)
// Cria colunas
oBrowse:AddColumn(TCColumn():New("Codigo",{||SA1->A1_COD },,,,"LEFT",,.F.,.F.,,,,,))
oBrowse:AddColumn(TCColumn():New("Loja" ,{||SA1->A1_LOJA},,,,"LEFT",,.F.,.F.,,,,,))
oBrowse:AddColumn(TCColumn():New("Nome" ,{||SA1->A1_NOME},,,,"LEFT",,.F.,.F.,,,,,))
oBrowse:lUseDefaultColors := .F.
// Muda a cor da linha do browser
oBrowse:SetBlkBackColor({|| IIf(SA1->A1_COD == "000001" .AND. SA1->A1_LOJA == '01' , CLR_HMAGENTA , Nil )})
oBrowse:Align := CONTROL_ALIGN_ALLCLIENT
ACTIVATE DIALOG oDlg CENTERED
Return
A rotina acima irá listar os clientes em um grid TCBrowse, e definirá a cor CLR_HMAGENTA somente para o cliente de código '000001' e loja '01'.
O seguinte grid será exibido:
Observação: Caso o recurso não atenda a sua necessidade, é possível também realizar outras mudanças no estilo do componente utilizando CSS, conforme documentação SetCSS.
1 Comentários