Como ter duas colunas ou mais de legendas em uma tela MVC

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:

Exemplo da tela com duas legendas

Abaixo um print ao dar duplo clique na primeira legenda:

Visualizando a primeira legenda

E abaixo um print ao dar duplo clique na segunda legenda:

Visualizando a 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.

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