No vídeo de hoje vamos demonstrar em como deixar uma Enchoice não editável em MVC.
Esse vídeo foi uma contribuição do grande Marco, onde ele disse que precisava em uma tela com grid e cabeçalho (Enchoice), desativar a alteração dos campos do cabeçalho.
Então montamos esse exemplo demonstrando a utilização do método SetOnlyView.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas #Include "Totvs.ch" #Include "FWMVCDef.ch" //Variveis Estaticas Static cTitulo := "Cadastro de CDs" Static cTabPai := "ZD2" Static cTabFilho := "ZD3" /*/{Protheus.doc} User Function zVid0050 Cadastro de CDs @author Daniel Atilio @since 16/07/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ User Function zVid0050() Local aArea := FWGetArea() Local oBrowse Private aRotina := {} //Definicao do menu aRotina := MenuDef() //Instanciando o browse oBrowse := FWMBrowse():New() oBrowse:SetAlias(cTabPai) oBrowse:SetDescription(cTitulo) oBrowse:DisableDetails() //Ativa a Browse oBrowse:Activate() FWRestArea(aArea) Return Nil /*/{Protheus.doc} MenuDef Menu de opcoes na funcao zVid0050 @author Daniel Atilio @since 16/07/2022 @version 1.0 @type function @obs Codigo 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.zVid0050" OPERATION 1 ACCESS 0 ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.zVid0050" OPERATION 4 ACCESS 0 Return aRotina /*/{Protheus.doc} ModelDef Modelo de dados na funcao zVid0050 @author Daniel Atilio @since 16/07/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ Static Function ModelDef() Local oStruPai := FWFormStruct(1, cTabPai) Local oStruFilho := FWFormStruct(1, cTabFilho) Local aRelation := {} Local oModel Local bPre := Nil Local bPos := Nil Local bCommit := Nil Local bCancel := Nil //Cria o modelo de dados para cadastro oModel := MPFormModel():New("zVid50M", bPre, bPos, bCommit, bCancel) oModel:AddFields("ZD2MASTER", /*cOwner*/, oStruPai) oModel:AddGrid("ZD3DETAIL","ZD2MASTER",oStruFilho,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/) oModel:SetDescription("Modelo de dados - " + cTitulo) oModel:GetModel("ZD2MASTER"):SetDescription( "Dados de - " + cTitulo) oModel:GetModel("ZD3DETAIL"):SetDescription( "Grid de - " + cTitulo) oModel:SetPrimaryKey({}) //Fazendo o relacionamento aAdd(aRelation, {"ZD3_FILIAL", "FWxFilial('ZD3')"} ) aAdd(aRelation, {"ZD3_CD", "ZD2_CD"}) oModel:SetRelation("ZD3DETAIL", aRelation, ZD3->(IndexKey(1))) //Definindo campos unicos da linha oModel:GetModel("ZD3DETAIL"):SetUniqueLine({'ZD3_MUSICA'}) //Deixando o cabeçalho como não editável oModel:GetModel("ZD2MASTER"):SetOnlyView(.T.) Return oModel /*/{Protheus.doc} ViewDef Visualizacao de dados na funcao zVid0050 @author Daniel Atilio @since 16/07/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ Static Function ViewDef() Local oModel := FWLoadModel("zVid0050") Local oStruPai := FWFormStruct(2, cTabPai) Local oStruFilho := FWFormStruct(2, cTabFilho) Local oView //Cria a visualizacao do cadastro oView := FWFormView():New() oView:SetModel(oModel) oView:AddField("VIEW_ZD2", oStruPai, "ZD2MASTER") oView:AddGrid("VIEW_ZD3", oStruFilho, "ZD3DETAIL") //Partes da tela oView:CreateHorizontalBox("CABEC", 30) oView:CreateHorizontalBox("GRID", 70) oView:SetOwnerView("VIEW_ZD2", "CABEC") oView:SetOwnerView("VIEW_ZD3", "GRID") //Titulos oView:EnableTitleView("VIEW_ZD2", "Cabecalho - ZD2") oView:EnableTitleView("VIEW_ZD3", "Grid - ZD3") //Removendo campos oStruFilho:RemoveField("ZD3_CD") //Adicionando campo incremental na grid oView:AddIncrementField("VIEW_ZD3", "ZD3_ITEM") Return oView
Bom pessoal, por hoje é só.
Abraços e até a próxima.