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
LEandro, como está a chamada do menudef?
— FELIPE CAIADO ALMEIDA 22 de Mar de 2021Estava 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 2021Blz Leandro, vou colocar como resposta aqui no blog
— FELIPE CAIADO ALMEIDA 22 de Mar de 2021