Ocultar campo modelo 1 MVC

Senhores Boa Noite,

Eu criei uma tela modelo 1 em MVC e queria ocultar um determinado campo, ao clicar em incluir por exemplo esse campo não pode aparecer no cadastro pois vou usar ele para um controle interno, é possível?

Obrigado.

Eraldo bom dia.

Pode fazer isso de duas formas, colocar ele como "não visual" ou remover ele no modeldef conforme o exemplo abaixo:


oStruZZ3:RemoveField("ZZ3_TPATES")

Bom Dia Felipe, tudo bem?

Perfeito vou usar esse comando então pra remover ele.

Obrigado.

Eraldo,

Você pode remover o campo com o método RemoveField da classe FWFormViewStruct, ou seja, o objeto que é retornando após você usar a função FWFormStruct com o tipo (nType) 2:


static function viewDef()
local oView as object
local oViewStruct as object

oViewStruct := FwFormStruct(2, "ALIAS")
oStruZZ3:removeField("MEU_CAMPO")

//Restante do código

return oView

Não é recomendado remover o campo do modelo, pois isso pode gerar exceções, como você mesmo disse, você pretende ocultar esse campo e ter um controle interno sobre ele, se você remover ele do modelo, não vai conseguir trabalhar com os método getValue e setValue.

Dito isso, não é possível efetuar esse controle somente via inclusão, pois quando as funções modelDef e viewDef são chamadas, ainda não foi setado nos objetos qual opção (operação) está sendo executada.

Se você deseja ocultar somente na inclusão, você teria que ter uma view apartada desse model, apenas para a inclusão, isso é possível, você teria uma view para inclusão e outra para as demais operações. Outra opção seria deixar o campo visível e desabilitado.


Documentações:

https://tdn.totvs.com/display/framework/FWFormStruct

https://tdn.totvs.com/display/framework/FWFormViewStruct

1 curtida