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.