Olá pessoal.
vou postar aqui como faço a xbrowse, não consigo jogar total no footer utilizando oBrw:aCols:nFooterType:= AGGR_SUM, me ajudem pra ver onde estou errando por favor.
@ 75,15 XBROWSE oBrw SIZE 453,165 PIXEL OF oDlgMat UPDATE
oBrw:cAlias := ("Cons")
oBrw:lRecordSelector := .T.
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL //HIGHLROWRC
oBrw:lAllowColSwapping:= .F. //----------------------------> Trocar Colunas
oBrw:lAllowRowSizing := .F. //----------------------------> Nao move as Linhas
oBrw:bClrStd := { ||{ CLR_BLACK, IIF( Cons->( OrdKeyNo() ) %2 == 0, COR_BRW1, COR_BRW2 ) } }
oBrw:bClrSel:={|| {CLR_WHITE,COR_BRW3}}
oBrw:bClrSelFocus:={|| {CLR_WHITE,COR_BRW3}}
oBrw:bKeyDown:={|nKey| IIF(nKey==VK_DELETE,ExcluiCons(oBrw),NIL)}
oBrw:lHScroll:=.F.
oBrw:lFastEdit:=.T.
oBrw:lAutoAppend:=.T.
oBrw:lFooter := .T. // tera rodape
oBrw:nFooterLines := 1 // numero de linhas no rodape
oBrw:nRowHeight:=29
oBrw:nStretchCol := STRETCHCOL_LAST
oBrw:nRowDividerStyle:=2
oBrw:nColDividerStyle:=2
oCol:=oBrw:addcol()
oCol:cHeader:="DATA"
oCol:bStrdata:={|| Cons->data}
oCol:nWidth:=70
oCol:nEditType := 1 //EDIT_GET_BUTTON
oCol:cEditPicture := "99/99/9999"
oCol:bOnPostEdit := { | oCol, uValue, nLastKey | Cons->data }
// oCol:bonPostEdit := { | oCol, uValue, nLastKey | IIf( nLastKey != VK_ESCAPE, (( Cons->(DBRLOCK()), Cons->data:=uValue , Cons->(DBUNLOCK()) )), ) }
oCol:bEditValid := <|oGet|
Cons->(dbRLock())
xData:=RIGHT(DTOC(oGet:Value()),7) //oGet:Value()
IF xData # vRef
MsgStop("Mês e Ano da data deve ser igual à referência indicada!","Atenção")
Cons->(dbUnLock()) ; Cons->(dbCommit())
Return(.F.)
END
Cons->data := oGet:Value()
Cons->(dbUnLock()) ; Cons->(dbCommit())
Return(.T.)
>
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrw:addcol()
oCol:cHeader:="ORDEM"
oCol:bStrdata:={|| Cons->codpro}
oCol:nWidth:=80
oCol:nEditType := EDIT_GET_BUTTON
oCol:cEditPicture := "@!"
oCol:bOnPostEdit := { | oCol, uValue, nLastKey | Cons->codpro }
oCol:bEditValid := <|oGet|
Cons->(dbRLock())
Cons->codpro := oGet:Value()
Cons->(dbUnLock()) ; Cons->(dbCommit())
Return(.T.)
>
oCol:bEditBlock := <|nRow, nCol, oCol|
Cons->(dbRLock())
If BuscaBrw(1,4,,"Produtos",,.T.,0)
Cons->codpro := Mat->codpro
Endif
Cons->(dbUnLock()) ; Cons->(dbCommit())
>
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrw:addcol()
oCol:cHeader:="DESCRIÇÃO"
oCol:bStrdata:={|| IIF(Mat->(dbSeek(Cons->codpro+Cons->codpro)),Mat->nommat,SPACE(50)) }
oCol:nWidth:=210
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrw:addcol()
oCol:cHeader:="COR"
oCol:bStrdata:={|| Cons->cor }
oCol:nWidth:=50
oCol:nEditType := EDIT_GET_BUTTON
oCol:cEditPicture := "9999"
oCol:bOnPostEdit := { | oCol, uValue, nLastKey | Cons->cor }
oCol:bEditValid := <|oGet|
Cons->(dbRLock())
Cons->cor := Zeracod( oGet:Value() )
IF !Cor->(dbSeek(Cons->cor))
MsgStop("Fábrica inexistente, verifique!","Atenção")
Return(.F.)
END
Cons->(dbUnLock()) ; Cons->(dbCommit())
Return(.T.)
>
oCol:bEditBlock := <|nRow, nCol, oCol|
Cons->(dbRLock())
If BuscaBrw(1,7,,"Cor",,.T.,0)
Cons->cor := Cor->codigo
Endif
Cons->(dbUnLock()) ; Cons->(dbCommit())
>
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrw:addcol()
oCol:cHeader:="DESCRIÇÃO"
oCol:bStrdata:={|| IIF(Cor->(dbSeek(Cons->cor)),Cor->descricao,SPACE(50)) }
oCol:nWidth:=90
// oCol:bFooter:={|| "TOTAIS: " }
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrw:addcol()
oCol:cHeader:="TAM"
oCol:bStrdata:={|| Cons->tamanho}
oCol:nWidth:=40
oCol:nEditType := 1 //EDIT_GET
oCol:cEditPicture := "@!"
oCol:bOnPostEdit := { | oCol, uValue, nLastKey | Cons->tamanho }
oCol:bEditValid := <|oGet|
Cons->(dbRLock())
Cons->tamanho := oGet:Value()
IF Est->(dbSeek(Cons->codfor + Cons->codpro + Cons->cor + Cons->tamanho))
Cons->est:=Est->estatu
END
Cons->(dbUnLock()) ; Cons->(dbCommit())
Return(.T.)
>
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrw:addcol()
oCol:cHeader:="DEIXOU"
oCol:bStrdata:={|| TRANS(Cons->qtde,"999")}
oCol:nWidth:=55
oCol:nEditType := 1 //EDIT_GET
oCol:cEditPicture := "999"
oCol:bOnPostEdit := { | oCol, uValue, nLastKey | Cons->qtde }
oCol:bEditValid := <|oGet|
Cons->(dbRLock())
Cons->qtde := VAL(oGet:Value())
Cons->(dbUnLock()) ; Cons->(dbCommit())
Return(.T.)
>
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrw:addcol()
oCol:cHeader:="FICOU"
oCol:bStrdata:={|| TRANS(Cons->est,"999")}
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:nWidth:=65
oCol:=oBrw:addcol()
oCol:cHeader:="VENDEU"
oCol:bStrdata:={|| TRANS(Cons->qtde-Cons->est,"999")}
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:nWidth:=65
oCol:=oBrw:addcol()
oCol:cHeader:="VR UNI"
oCol:bStrdata:={|| TRANS(Mat->prerep,"@E 999,999.99") }
oCol:nDataStrAlign := AL_RIGHT
oCol:nWidth:=50
oCol:=oBrw:addcol()
oCol:cHeader:="VR TOT"
oCol:bStrdata:={|| TRANS((Mat->prerep*(Cons->qtde-Cons->est)),"@E 999,999.99") }
oCol:nDataStrAlign := AL_RIGHT
oCol:nWidth:=50
oCol:nHeadStrAlign := AL_RIGHT
oCol:nDataStrAlign := AL_RIGHT
oBrw:aCols[9]:nFooterType:= AGGR_TOTAL
AEval( oBrw:aCols, { |o| o:nFooterType := AGGR_SUM, ;
o:bOnChange := { || oBrw:MakeTotals(),oBrw:RefreshFooters() } }, 2 )
oBrw:MakeTotals()
oBrw:CreateFromCode()