#include"fivewin.ch"
function test()
Local oDlg,oBrw, oCol, oFont
local aCols := { { "Type", 'C', 10, 0 }, { "Import", 'N', 10, 2 }, { "Iva", 'N', 10, 2 }, { "Total", 'N', 10, 2 } }
Local adata:={{"U",15.00,0.00,15.00 },;
{"E",148.76,31.24,180.00 },;
{"U",16.49,3.46,19.95 }}
DBCREATE( "ftotal", aCols)
USE ftotal
FW_ArrayToDBF( aData )
CLOSE DATA
USE ftotal
DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
DEFINE DIALOG oDlg SIZE 700,300 PIXEL FONT oFont ;
TITLE 'Footer totals'
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
AUTOCOLS ;
HEADERS 'Type', 'Import', 'Iva', 'Total' ;
ARRAY "ftotal" CELL LINES NOBORDER FASTEDIT FOOTERS
oBrw:nStretchCol := 1
oBrw:CreateFromCode()
for each oCol in oBrw:aCols
WITH OBJECT oCol
if ValType( :Value ) == 'N'
:bFooter := {|oCol| CustomSumCol(oCol) }
:nEditType := EDIT_GET
endif
END
next
ACTIVATE DIALOG oDlg CENTERED
Return nil
function CustomSumCol(oCol)
local oBrw := oCol:oBrw
local nMult
local cType
local uBm := oBrw:BookMark()
oCol:cFooter := 0
Eval( oBrw:bGoTop )
do
nMult := if(oBrw:aCols[1]:Value = "U", -1, 1)
oCol:cFooter += oCol:Value * nMult
until ( oBrw:Skip( 1 ) < 1 )
oBrw:BookMark := uBm
cType := ValType( oCol:cFooter )
if cType == oCol:cDataType .and. IfNil( oCol:cFooterPicture, oCol:cEditPicture ) != nil
oCol:cFooter := cValToStr( oCol:cFooter, IfNil( oCol:cFooterPicture, oCol:cEditPicture ),, ;
IfNil( oCol:lDisplayZeros, oCol:oBrw:lDisplayZeros ) )
else
oCol:cFooter := cValToChar( oCol:cFooter )
endif
return oCol:cFooter