Modificando propriedade de campo em tempo de execução: 'MVC_VIEW_CANCHANGE'

Olá,

No código abaixo eu busco alterar em tempo de execução a propriedade de dois campos, ao clicar em botão no Outras Ações.

Mas não há resultado esperado. Alguma ideia de onde eu posso estar errando?


Static Function InputGrau(oView)
    Local cIDUser     := RetCodUsr()
    Local cUserList := SuperGetMV("ES_909VIT", .T., "")

    oView := FWViewActive()

    If oView:GetOperation() == MODEL_OPERATION_UPDATE

        If !( cIDUser $ cUserList )
            Help( , , "FB009VIT", , "Usuário sem permissão para alterar o Grau médio.", 1, 0, , , , , ,{"Verifique com a gestão."}  )
            Return
        Else
            oView:GetModel("ZVLMASTER"):SetValue("ZVL_RELGRA", 0)
            oView:GetModel("ZVLMASTER"):SetValue("ZVL_BABMED", 0)
            oView:GetModel("ZVLMASTER"):SetValue("ZVL_BABFIN", 0)

            oView:GetViewStruct("ZVLMASTER"):SetProperty('ZVL_RELGRA', MVC_VIEW_CANCHANGE , .F. )
            oView:GetViewStruct("ZVLMASTER"):SetProperty('ZVL_BABMED', MVC_VIEW_CANCHANGE , .T. )

            oView:Refresh("ZVLMASTER")
        Endif
    Endif
Return

Everson, já tentou colocar a sua função dentro do X3_WHEN do campo e retornar um valor lógico para permitir a edição ou não?