Bom dia, pessoal!
Estou desenvolvendo uma tela onde a mesma possui totalizadores no rodapé. Para um totalizador em específico, eu utilizo a operação FORMULA.
Estou com um problema nesse totalizador quando as linhas são deletadas. A ação do cálculo do totalizador é executada antes da deleção da linha, então não consigo usar o método IsDeleted da classe FwFormGridModel para montar o novo valor.
Existe alguma outra maneira de saber se aquela linha está deletada (ou marcada para deleção), de modo que eu possa ajustar o cálculo do totalizador?
Agradeço pela atenção.
Adiciona um gatilho, no modelDef, que chame uma função para recalcular os valores:
oStruct:AddTrigger("ZA4_ALTERN", "ZA4_RENTAB", bVldGat, {|| A020GatR("ZA4_RENTAB")})
Depois programe uma função pra varrer sua grid, verificando se o campo é deletado, faça os cálculos necessários:
For nLine := 1 to oModelZA7:Length()
oModelZA7:Goline(nLine)
lInserted := (oModelZA7:IsInserted())
lDeleted := (oModelZA7:IsDeleted() .or. nOper == MODEL_OPERATION_DELETE)
No final das validações, execute o load do campo totalizador
If nVlrTot > 0
//Total
oModel:GetModel("TOT_PROP"):LoadValue("PROPTOT", nVlrTot)
Bom dia, João. Mas nesse caso o gatilho só seria executado se eu tentasse alterar o campo ZA4_ALTERN. No meu caso, se eu alterar o campo funciona normalmente usando o AddCalc. O problema está sendo apenas no deletar a linha, o cálculo está sendo disparado pelo framework antes da efetivação da deleção da linha.
Bom dia, Giordano.
Então crie um botão na tela para atualizar o cálculo. Nesse caso, você ignora as linhas da grid que foram deletadas.