Criei uma tela de pré-cadastro para o usúario avaliar. Já entra em modo de alteração, porém o usuário tem que obrigatoriamente alterar algo porque se clicar no botão Confirmar dá mensagem que nada foi alterado. Temo como entrar no formulário já como se o usuário tivesse feito alguma alteração.
Bom dia,
A função alterar do MVC valida se foi alterado alguma informação, se o usuário não alterar nada a informação aparecerá, mas qual sentido da mensagem não aparecer se ele não alterou nada ?
Olá Tiago, a rotina é um pré-cadastro com dados que foram importados da Web. As vezes, depois da importação, o pré-cadastro está simplesmente correto, não há nada a ser alterado. Neste caso seria clicar no botão confirmar e seguir o processo, porém como não tem nada para alterar, o usuário tem que fazer alguma alteração(e apagar), e clicar no botão Confirmar, daí funciona, mas não quero que seja necessário fazer isso.
Boa tarde, Luciano!
Caso você realmente use o modo Alteração, você terá que "forçar" alguma modificação no modelo para que a mensagem não seja exibida.
Você pode forçar essa alteração em um campo existente ou criar um campo no modelo para essa finalidade.
Segue exemplo criando um campo no modelo e forçando a alteração nele:
Adicione no ModelDef
// Criando o campo virtual
oStruGrid:AddField('', '', 'ZTD_BRANCO', 'C', 5, 0, Nil, Nil, Nil, Nil, { || '' } , Nil, Nil, .T. )
// Forçando uma ação ao ativar o modelo
oModel:SetActivate({ |oModel| fModifyMdl(oModel)})
Adicione na ViewDef
oStruGrid:AddField('ZTD_BRANCO', '99', '', '', {''}, 'C', '@!', Nil, '', .F., Nil, Nil, Nil, Nil, Nil, .T., Nil, Nil)
Função que será chamada ao ativar o modelo:
Static Function fModifyMdl(oModel)
If(oModel:GetOperation() == MODEL_OPERATION_UPDATE)
FwFldPut('ZTD_BRANCO', 'X', , oModel)
EndIf
Return
Observação: Necessário avaliar a condição usada dentro função executada ao ativar o modelo. Lembre-se que ela será disparada toda vez que isso acontecer, seja inclusão, visualização, etc.
Giordano, obrigado funcionou perfeitamente.