Footer con TWBrowse de HC

Footer con TWBrowse de HC

Postby rolando » Tue Dec 30, 2008 9:00 pm

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 :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Footer con TWBrowse de HC

Postby csincuir » Wed Dec 31, 2008 12:56 am

Rolando, si se puede, y lo hago de esta forma:

Code: Select all  Expand view
   
            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


Espero te sirva.

Saludos, y Feliz Año Nuevo!!

Carlos Sincuir
csincuir
 
Posts: 407
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Footer con TWBrowse de HC

Postby rolando » Wed Dec 31, 2008 9:19 am

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 :roll: lando
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Footer con TWBrowse de HC

Postby Francisco Horta » Wed Dec 31, 2008 3:49 pm

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
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Footer con TWBrowse de HC

Postby rolando » Wed Dec 31, 2008 7:16 pm

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 :D olando
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Footer con TWBrowse de HC

Postby rolando » Wed Dec 31, 2008 8:13 pm

Paco,

Tu me diste la idea. Retoqué un poquito la clase de Hernán y logré que haga lo que deseaba.

Image

Saludos.

Roland :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Footer con TWBrowse de HC

Postby rolando » Thu Jan 01, 2009 11:01 pm

Me olvidé de publicar la reforma,

Hay que reformar el METHOD DrawFooters:


Code: Select all  Expand view

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




Saludos.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Footer con TWBrowse de HC

Postby Francisco Horta » Fri Jan 02, 2009 7:01 pm

Gracias Rolando, enseguida adapto la wbrowse
salu2
Paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Footer con TWBrowse de HC

Postby Rochinha » Mon Jan 05, 2009 11:37 am

Estimados,

Fiz pequenas alteracoes em minha HC-TWBrowse:
Code: Select all  Expand view
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


Em meus aplicativos uso:
Code: Select all  Expand view
...
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  Expand view
...
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]) ) }
...
Rochinha
 
Posts: 310
Joined: Sun Jan 08, 2006 10:09 pm
Location: Brasil - Sao Paulo


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 48 guests