Dúvida no comportamento dos totalizadores - FwCalcStruct

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.