Se alguma pergunta ou resposta lhe foi útil, não deixe de dar seu voto positivo!

Remover campos de View de modelo herdado

Prezados, estou reutilizando a Model de um fonte que desenvolvi, para reutilizar em uma nova View com um conceito diferente da original. Porém mesmo instanciando uma nova View na ViewDef, é carregada a view do fonte original, mas preciso de que seja carregada a view criada em que vou remover alguns campos e adicionar mais painéis. Segue Model e View.

Static Function ModelDef()
    //Array com a estrutura de relação ZA5 x ZA6
    Local aZA6Rel := {}
    // Cria a estrutura a ser acrescentada no Modelo de Dados
    Local oStruZA5 := FwFormStruct(1, "ZA5")
    Local oStruZA6 := FWFormStruct( 1, 'ZA6', /*bAvalCampo*/,/*lViewUsado*/ )

    // Inicia o Model com um Model ja existente
    Local oModel := FWLoadModel( 'ESTA42M' )

    // Adiciona a nova FORMFIELD
    //oModel:AddFields( 'ZA6DETAIL', 'ZA0MASTER', oStruZA6 )
    oModel:AddFields("ZA5MASTER", NIL,oStruZA5)
    oModel:AddGrid("ZA6DETAIL", "ZA5MASTER",oStruZA6)

    // Faz relacionamento entre os compomentes do model
    aAdd(aZA6Rel, {'ZA6_FILIAL' ,'xFilial("ZA6")'} )
    aAdd(aZA6Rel, {'ZA6_NUM'    ,'ZA5_NUM'})
    aAdd(aZA6Rel, {'ZA6_SEQUEN'    ,'ZA5_SEQUEN'})
    //IndexKey -> quero a ordenação e depois filtrado
    oModel:SetRelation('ZA6DETAIL', aZA6Rel, ZA6->(IndexKey(2))) //Produto

    // Adiciona a descricao do novo componente
    oModel:GetModel( 'ZA6DETAIL' ):SetDescription( 'Digitação de Inventário' )
Return oModel
Static Function ViewDef()
    // Cria um objeto de Modelo de Dados baseado no ModelDef do fonte informado
    Local oModel := FWLoadModel( 'ESTA42M' )

    // Cria a estrutura a ser acrescentada na View
    Local oStruZA5 := FWFormStruct( 2, 'ZA5' )
    Local oStruZA6 := FWFormStruct( 2, 'ZA6' )

    //Removendo campos não necessarios
    oStruZA5:RemoveField('ZA5_PROD')
    oStruZA5:RemoveField('ZA5_DESCPR')
    oStruZA5:RemoveField('ZA5_QUANT')
    oStruZA5:RemoveField('ZA5_LOCAL')
    oStruZA5:RemoveField('ZA5_LOCLIZ')
    oStruZA5:RemoveField('ZA5_OBS')

    // Instanciando uma nova View
    oView := FWFormView():New()
    oView:SetModel(oModel)

    // Adiciona no nosso View um controle do tipo FormFields(antiga enchoice)
    oView:AddField("VIEW_ZA5", oStruZA5, "ZA5MASTER",,)
    oView:AddGrid("VIEW_ZA6", oStruZA6, "ZA6DETAIL",,/* bFocusZA6 */)

    // Criando Boxes
    oView:CreateVerticallBox( 'MAIN' , 100, 'SCREEN' )
    // Novos Sub-Boxes
    oView:CreateHorizontalBox( 'SUPERIOR' , 50, 'MAIN' )
    oView:CreateHorizontalBox( 'INFERIOR' , 50, 'MAIN' )

    // Relaciona o identificador (ID) da View com o "box" para exibicao
    oView:SetOwnerView( 'VIEW_ZA5', 'SUPERIOR' )
    oView:SetOwnerView( 'VIEW_ZA6', 'INFERIOR' )
Return oView
compartilhar
  • LEandro, como está a chamada do menudef?

    FELIPE CAIADO ALMEIDA   22 de Mar de 2021
  • Estava chamando com o nome do fonte original, alterei aqui e resolveu, muito obrigado Felipe, não tinha reparado nisso.

    Leandro Lemos   22 de Mar de 2021
  • Blz Leandro, vou colocar como resposta aqui no blog

    FELIPE CAIADO ALMEIDA   22 de Mar de 2021
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags mvc model view modeldef viewdef ou faça a sua própria pergunta.