No artigo de hoje, vou mostrar como adicionar 2 colunas de legenda (ou mais) em um Browse de uma tela em MVC.
Se você já precisou adicionar mais de uma coluna com legenda em uma tela, saiba que é mais simples do que parece. Basicamente no método AddLegend, basta na quarta posição, você enviar o número da coluna da legenda.
Então por exemplo, se uma tela tiver duas colunas de legenda, basta informar “1” ou “2” para definir se a regra será para primeira ou para a segunda coluna.
Abaixo um print da tela de exemplo:
Abaixo um print ao dar duplo clique na primeira legenda:
E abaixo um print ao dar duplo clique na segunda legenda:
E por fim, o código fonte desenvolvido de exemplo:
//Bibliotecas
#Include "Totvs.ch"
#Include "FWMVCDef.ch"
//Variveis Estaticas
Static cTitulo := "Grupo de Produtos"
Static cAliasMVC := "SBM"
/*/{Protheus.doc} User Function zSBM01
Teste SBM
@author Daniel Atilio
@since 09/06/2021
@version 1.0
@type function
@obs A base desse codigo foi gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
User Function zSBM01()
Local aArea := GetArea()
Local oBrowse
Local nIgnore := 1
Private aRotina := {}
//Definicao do menu
aRotina := MenuDef()
//Instanciando o browse
oBrowse := FWMBrowse():New()
oBrowse:SetAlias(cAliasMVC)
oBrowse:SetDescription(cTitulo)
oBrowse:DisableDetails()
oBrowse:DisableReport()
//Adicionando a primeira legenda
oBrowse:AddLegend( "Empty(SBM->BM_PROORI)", 'WHITE', 'Sem Procedencia', '1' )
oBrowse:AddLegend( "SBM->BM_PROORI == '0'", 'BLUE', 'Procedencia Original', '1' )
oBrowse:AddLegend( "SBM->BM_PROORI == '1'", 'BROWN', 'Procedencia Não Original', '1' )
//Adicionando a segunda legenda
oBrowse:AddLegend( "Empty(SBM->BM_STATUS)", 'BLACK', 'Sem Status', '2' )
oBrowse:AddLegend( "SBM->BM_STATUS == '1'", 'RED', 'Novo', '2' )
oBrowse:AddLegend( "SBM->BM_STATUS == '2'", 'ORANGE', 'Reformulado', '2' )
oBrowse:AddLegend( "SBM->BM_STATUS == '3'", 'YELLOW', 'Reciclado', '2' )
oBrowse:AddLegend( "SBM->BM_STATUS == '4'", 'GREEN', 'Usado', '2' )
//Ativa a Browse
oBrowse:Activate()
//Tratativa para ignorar warnings de ViewDef e ModelDef nunca chamados
If nIgnore == 0
ModelDef()
ViewDef()
EndIf
RestArea(aArea)
Return Nil
/*/{Protheus.doc} MenuDef
Menu de opcoes na funcao zSBM01
@author Daniel Atilio
@since 09/06/2021
@version 1.0
@type function
@obs A base desse codigo foi gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
Static Function MenuDef()
Local aRotina := {}
//Adicionando opcoes do menu
ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.zSBM01" OPERATION 1 ACCESS 0
Return aRotina
/*/{Protheus.doc} ModelDef
Modelo de dados na funcao zSBM01
@author Daniel Atilio
@since 09/06/2021
@version 1.0
@type function
@obs A base desse codigo foi gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
Static Function ModelDef()
Local oStruct := FWFormStruct(1, cAliasMVC)
Local oModel
Local bPre := Nil
Local bPos := Nil
Local bCommit := Nil
Local bCancel := Nil
//Cria o modelo de dados para cadastro
oModel := MPFormModel():New("zSBM01M", bPre, bPos, bCommit, bCancel)
oModel:AddFields("SBMMASTER", /*cOwner*/, oStruct)
oModel:SetDescription("Modelo de dados - " + cTitulo)
oModel:GetModel("SBMMASTER"):SetDescription( "Dados de - " + cTitulo)
oModel:SetPrimaryKey({})
Return oModel
/*/{Protheus.doc} ViewDef
Visualizacao de dados na funcao zSBM01
@author Daniel Atilio
@since 09/06/2021
@version 1.0
@type function
@obs A base desse codigo foi gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
Static Function ViewDef()
Local oModel := FWLoadModel("zSBM01")
Local oStruct := FWFormStruct(2, cAliasMVC)
Local oView
//Cria a visualizacao do cadastro
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField("VIEW_SBM", oStruct, "SBMMASTER")
oView:CreateHorizontalBox("TELA" , 100 )
oView:SetOwnerView("VIEW_SBM", "TELA")
Return oView
Bom pessoal, por hoje é só.
Abraços e até a próxima.


