MVC - Alteração da Propriedade "WHEN" em tempo de execução

Bom dia! Estou desenvolvendo uma rotina em MVC modelo 3 (pai e filho-grid) e preciso alterar a propriedade de um campo que está no "pai" quando o "filho" (grid) for preenchido (em tempo de execução no caso). Tentei criar uma função de validação no "bPost" na criação da grid, capturando a Struct do model principal e alterando a propriedade do campo desejado, porém não surtiu efeito.


//Na criação da grid
bPost := {|oGridModel| fVldGrid(oGridModel, 'bPost')}
oModel:AddGrid( 'SZJDETAIL', 'SZIMASTER', oStruSZJ, bPre, bPost)

//Na funcao de validacao fVldGrid
If oGridModel:Length(.T.) > 0
    oStruSZI := oModel:GetModel("SZIMASTER"):GetStruct()
    oStruSZI:SetProperty('ZI_RATPRE', MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN, '.F.'))
EndIf

Alguém tem ideia de como resolver isso ?

Obrigado.

Boa tarde Michel,

Não recomendo esse tipo de código, ao alterar estruturas durante a execução, tanto o modelo quanto a view já estão ativos e podem não receber o refresh necessário para que passem a verificar essa alteração, uma vez que os componentes de tela já estão todos instanciados.

O WHEN pode ser criado diretamente no SX3 pelo configurador, onde você pode criar sua user function e colocar todas as regras, sendo que o importante é retornar um boolean, ou seja, esse seu código pode virar uma user function e passar a retornar um boolean para o WHEN, essa é a abordagem recomendada.