Footer con TWBrowse de HC
Footer con TWBrowse de HC
Buenas tardes,
Tengo un browse (TWBROWSE HC) que tiene seis columnas con sus respectivos seis Headers.
De estas seis columnas, sólo una necesita un total a colocar en el Footer. Mi consulta es si se puede hacer que, teniendo seis columnas pueda dibujarse un solo footer marginado sobre la derecha para que se vea el total de la última columna.
Gracias.
Rolando
Tengo un browse (TWBROWSE HC) que tiene seis columnas con sus respectivos seis Headers.
De estas seis columnas, sólo una necesita un total a colocar en el Footer. Mi consulta es si se puede hacer que, teniendo seis columnas pueda dibujarse un solo footer marginado sobre la derecha para que se vea el total de la última columna.
Gracias.
Rolando
Re: Footer con TWBrowse de HC
Rolando, si se puede, y lo hago de esta forma:
Espero te sirva.
Saludos, y Feliz Año Nuevo!!
Carlos Sincuir
Code: Select all
nTDebe := 0
nTHaber := 0
oLbx:lDrawFooters := .t.
oLbx:aFooters := { "","Suma Iguales:", Transform( nTDebe, "999,999,999.99" )+" ", Transform( nTHaber, "999,999,999.99" )+" " }
oLbx:aFJustify:={0,1,1,1} //Justificación 0=Izquierda, 1=derecha, 2=Centro
Saludos, y Feliz Año Nuevo!!
Carlos Sincuir
Re: Footer con TWBrowse de HC
Carlos,
Te agradezco por contestar, pero como tu indicas es justamente como lo hago y no es lo que quiero lograr.
Del modo que sugieres se obtienen cuatro columnas en el footer y lo que quiero hacer es que todo el footer sea una sola columna con el total.
Saludos y feliz año nuevo.
R lando
Te agradezco por contestar, pero como tu indicas es justamente como lo hago y no es lo que quiero lograr.
Del modo que sugieres se obtienen cuatro columnas en el footer y lo que quiero hacer es que todo el footer sea una sola columna con el total.
Saludos y feliz año nuevo.
R lando
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
Re: Footer con TWBrowse de HC
Rolando,
Lo que quieres hacer no se puede, yo lo trate de hacer, pero hay que meterle mano a la clase y directamente al programa en .c cosa que no se me da
salu2
paco
Lo que quieres hacer no se puede, yo lo trate de hacer, pero hay que meterle mano a la clase y directamente al programa en .c cosa que no se me da
salu2
paco
____________________
Paco
Paco
Re: Footer con TWBrowse de HC
Paco,
Gracias por responder. Seguiré como venía haciéndolo. Lo que pasa es que uno se entusiasma y está siempre queriendo cambiarle todo.
Feliza año nuevo para tí y para todo el foro.
R olando
Gracias por responder. Seguiré como venía haciéndolo. Lo que pasa es que uno se entusiasma y está siempre queriendo cambiarle todo.
Feliza año nuevo para tí y para todo el foro.
R olando
Re: Footer con TWBrowse de HC
Me olvidé de publicar la reforma,
Hay que reformar el METHOD DrawFooters:
Saludos.
Rolando
Hay que reformar el METHOD DrawFooters:
Code: Select all
If Len( aFooters ) <> ( nLen:= Len( ::GetColSizes() ) )
* ASize( aFooters, nLen )
////////////////////////////////////////////////////////////////////////////////////////
if len(aFooters) == 1 // by R. Cerella para footer 1 sola columna
ASize( aFooters, 1 )
else
ASize( aFooters, nLen )
endif
////////////////////////////////////////////////////////////////////////////////////////
AEval( aFooters, {|uElem,n| ;
aFooters[n]:= If( !"C"$ValType(uElem),"",uElem) } )
EndIf
Rolando
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
Re: Footer con TWBrowse de HC
Gracias Rolando, enseguida adapto la wbrowse
salu2
Paco
salu2
Paco
____________________
Paco
Paco
Re: Footer con TWBrowse de HC
Estimados,
Fiz pequenas alteracoes em minha HC-TWBrowse:
Em meus aplicativos uso:
Fiz pequenas alteracoes em minha HC-TWBrowse:
Code: Select all
CLASS TWBrowse FROM TControl
DATA bFooter
DATA lSumFooter INIT .f.
...
//----------------------------------------------------------------------------//
METHOD ReDefine( nId, bLine, oDlg, aHeaders, aColSizes, cField, uVal1, uVal2,;
bChange, bLDblClick, bRClick, oFont, oCursor,;
nClrFore, nClrBack, cMsg, lUpdate, cAlias,;
bWhen, bValid, bLClick, aActions ) CLASS TWBrowse
...
::bFooter = {||.t.}
::lSumFooter = .f.
...
return Self
//----------------------------------------------------------------------------//
METHOD Paint() CLASS TWBrowse
local n := 1, nSkipped := 1, nLines
local nSkip, nRealSkip
if ::lIconView
::DrawIcons()
return 0
endif
if ::nRowPos == 1 .and. ! Empty( ::cAlias ) .and. ;
Upper( ::cAlias ) != "ARRAY" .and. Upper( ::cAlias ) != "_TXT_"
if ! ( ::cAlias )->( EoF() )
( ::cAlias )->( DbSkip( -1 ) )
if ! ( ::cAlias )->( BoF() )
( ::cAlias )->( DbSkip() )
endif
endif
endif
// **********
if ::lSumFooter
::lDrawFooters := .t.
::aFJustify := ::aJustify
endif
// **********
...
return 0
//----------------------------------------------------------------------------//
METHOD Refresh( lSysRefresh ) CLASS TWBrowse
If ::Cargo != Nil .or. ; // Tree
!( ::nLen := Eval( ::bLogicLen ) ) > 0
Super:Refresh()
Else // Si hay elementos en la tabla
DEFAULT lSysRefresh:= .f.
If "B"$ValType( ::aFooters )
::DrawFooters()
EndIf
Super:Refresh( .f. ) // No borrar fondo, WBrwPane se encarga de eso !!
If lSysRefresh // OJO Usar con cuidado porque puede hacer agotar
SysRefresh() // el Stack :-(
EndIf
// **********
if ::lSumFooter
eval( ::bFooter )
endif
// **********
EndIf
return 0
Code: Select all
...
REDEFINE LISTBOX oLbx FIELDS ... ;
HEADERS ... ;
FIELDSIZES ... ;
ID 999 OF oDlg
//
oLbx:aJustify := { .f., .f., 1, .f., 1, 1 }
//
oLbx:lSumFooter := .t.
oLbx:bFooter := {|| ( aSumFooter := nSumFooter( oLbx, "CLIENTS", {0,0,0,0,1,1} ) ) }
oLbx:aFooters := { "", "", "", "", 0, 0 }
//
...
Code: Select all
...
function nSumFooter( oSUMLbx, cSUMArea, aSUMArray )
// oSUMLbx - Objeto Browse
// cSUMArea - Alias usado no momento
// aSUMArray - Array de 0s e 1s onde 0-Nao soma e 1-Soma
local aSUMLbx := {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
nSUMArea := Select()
dbSelectArea( cSUMArea )
dbGotop()
do while .not. eof()
for n = 1 to Len( aSUMArray )
if aSUMArray[n] = 1
aSUMLbx[n] := aSUMLbx[n] + Eval( GenBlockN( oSUMLbx:bLine, n ) )
endif
next
skip
enddo
for n = 1 to Len( aSUMArray )
oSUMLbx:aFooters[n] := iif( aSUMArray[n] = 0, "", transf( aSUMLbx[n], "@E 999999.99" ) )
next
dbGotop()
dbSelectArea( nSUMArea )
return aSUMLbx
static function GenBlockN( bLine, nPos )
return { || val( iif(","$Eval(bLine)[nPos],;
substr(Eval(bLine)[nPos],1,at(",",Eval(bLine)[nPos])-1)+"."+substr(Eval(bLine)[nPos],at(",",Eval(bLine)[nPos])+1,3),;
Eval(bLine)[nPos]) ) }
...