Olá, pessoal! Estou utilizando um AddCalc e a OPERAÇÃO igual a FORMULA. Na fórmula basicamente eu calculo uma média de um determinado campo. Até aqui tudo perfeito, mas quando deleto uma linha o comportamento do componente não igual a por exemplo quando a OPERAÇÃO é SUM, neste caso ele já atualiza o campo automaticamente.
Eu até entendo que tenha que fazer esse tratamento na minha fórmula, porém eu não tenho (ou não conheço) nenhum recurso onde reconheça se a ação foi um DELETE de linha. Quando a fórmula é acionada pelo DELETE, a linha ainda não foi marcada de fato como deletada.
local b_Form1 := {|oModel,nTotalAtual,xValor,lSomando| f_KmPorLitro(oModel,nTotalAtual,xValor,lSomando) }
..
oModel:AddCalc( 'CALCABAST', 'Z02MASTER', 'Z10GRID', 'Z10_TOTAL', 'Z10__TOT02', 'FORMULA',{ || .T. },,'KM/L:',b_Form1 )
..
static function f_KmPorLitro(oModel,nTotalAtual,xValor,lSomando)
local n_Km_L := 0
local o_Abastec := oModel:GetModel('Z10GRID')
local n_Tot_Km := 0
local n_Tot_L := 0
local nA := 0
local a_LineBkp := FWSaveRows()
For nA := 1 To o_Abastec:Length()
o_Abastec:GoLine( nA )
//if !o_Abastec:IsDeleted()
n_Tot_Km += o_Abastec:GetValue( "Z10_KMTOT" )
n_Tot_L += o_Abastec:GetValue( "Z10_QUANT" )
//endif
Next nA
n_Km_L := Round( n_Tot_Km / n_Tot_L, 2 )
FWRestRows( a_LineBkp )
return( n_Km_L )