Page 1 of 1

xBrowse -> Footers Calculo de totales de esa columna??

PostPosted: Fri Sep 28, 2007 1:12 am
by Ruben D. Fernandez
Amigos:

Disculpen otra vez la lata con xBrowse...
necesito saber como calculo el total de cada columna de un xBrowse
para colocarla en los footers.

Muchas gracias.


Ruben Fernandez.

PostPosted: Fri Sep 28, 2007 6:35 am
by JoseLuis
En este listbox, pongo los nombres de los conductores, la suma de los importes mensuales en cada columna, y en los footers, los totales por mes.
A ver si te sirve

Code: Select all  Expand view
  @ 30,0 LISTBOX oLbx FIELDS (aAlias[26])->Codigo,;
                               (aAlias[26])->Nombre,;
                               transform(((aAlias[26])->CO01+(aAlias[26])->CR01),Publicas:cPic),;
                               transform(((aAlias[26])->CO02+(aAlias[26])->CR02),Publicas:cPic),;
                transform(((aAlias[26])->CO03+(aAlias[26])->CR03),Publicas:cPic),;
                transform(((aAlias[26])->CO04+(aAlias[26])->CR04),Publicas:cPic),;
                transform(((aAlias[26])->CO05+(aAlias[26])->CR05),Publicas:cPic),;
                transform(((aAlias[26])->CO06+(aAlias[26])->CR06),Publicas:cPic),;
                transform(((aAlias[26])->CO07+(aAlias[26])->CR07),Publicas:cPic),;
                transform(((aAlias[26])->CO08+(aAlias[26])->CR08),Publicas:cPic),;
                transform(((aAlias[26])->CO09+(aAlias[26])->CR09),Publicas:cPic),;
                transform(((aAlias[26])->CO10+(aAlias[26])->CR10),Publicas:cPic),;
                               transform(((aAlias[26])->CO11+(aAlias[26])->CR11),Publicas:cPic),;
                transform(((aAlias[26])->CO12+(aAlias[26])->CR12),Publicas:cPic),;
                transform(((aAlias[26])->Tot),Publicas:cPic);
                               HEADER " Código ","Nombre"," Enero "," Febrero "," Marzo "," Abril "," Mayo "," Junio "," Julio "," Agosto "," Sepbre "," Octubre "," Novbre "," Dicbre "," Total ";
                               FIELDSIZES 35,200,52,52,52,52,52,52,52,52,52,52,52,52,52;
                               ALIAS aAlias[26];
                CURSOR oCurdedo;
                COLOR CLR_BLACK, nRGB(226,226,208) ;
                ON LEFT DBLCLICK  (iif(!(aAlias[26])->(eof()) .and. Publicas:cAccesoM,(cTitulo:="Modificación de Conductores ",Enconduc(cTitulo,"M",aAlias,aoDbf),oLbx:Refresh()),.T.));
                OF oDlg;
                PIXEL
   oLbx:nLineStyle := 1
   oLbx:nClrBackHead := RGB(248,191,36)
   oLbx:lDrawFooters:= .T.
   oLbx:aFooters := {"", "Total por Mes.....", Trans(Publicas:tMes[1],Publicas:cPic ), Trans(Publicas:tMes[2],Publicas:cPic ), Trans(Publicas:tMes[3],Publicas:cPic ), Trans(Publicas:tMes[4],Publicas:cPic ),;
                    Trans(Publicas:tMes[5],Publicas:cPic ), Trans(Publicas:tMes[6],Publicas:cPic ), Trans(Publicas:tMes[7],Publicas:cPic ), Trans(Publicas:tMes[8],Publicas:cPic ), ;
          Trans(Publicas:tMes[9],Publicas:cPic ), Trans(Publicas:tMes[10],Publicas:cPic ), Trans(Publicas:tMes[11],Publicas:cPic ), Trans(Publicas:tMes[12],Publicas:cPic ),Trans(Publicas:ntotal,Publicas:cPic )}
   oLbx:bKeyChar := { | nKey, nFlags | ;
              iif (nKey == 43 .or. nKey == 65 .or. nKey == 97,;
                          (Enconduc(cTitulo,"A",aAlias,aoDbf), oLbx:Refresh()), ),;
              iif (nKey == 66 .or. nKey == 98,;
                          (Borrar(aAlias[26],(aAlias[26])->nombre,'Conductor nombre: '),oLbx:UpStable(), oLbx:Refresh()), ),;
              iif (nKey == 77 .or. nKey == 109,  ;
                          (Enconduc(cTitulo,"M",aAlias,aoDbf),oLbx:Refresh() ), ) }
   oLbx:nClrPane:={||iIF((oLbx:cAlias)->(OrdKeyNo())%2==0,nRGB(242,247,252),nRGB(226,226,208))}
   oLbx:nClrfBack := RGB(196,229,244)//(3,187,85)
   oLbx:aJustify := {.T.,.F.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.}
   oLbx:aHJustify := {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
   OlBX:nFooterStyle:=11


Saludos

Jose Luis

PostPosted: Fri Sep 28, 2007 12:44 pm
by Ruben D. Fernandez
Gracias Jose Luis...

Pero... lo quiero hacer con xbrowse.

Saludos

Ruben Fernandez.

PostPosted: Fri Sep 28, 2007 1:40 pm
by Biel EA6DD
Con xBrowse, cFooter es un valor estatico, al igual que cHeader.

Yo añadi un data a la clase TXBrwColumn, el data bStrFooter, que contiene un codeblock que nos debe retornar lo que queremos visualizar en el pie de la columna.

Hay que modificar el metodo PaintFooter, y en la linea donde asigna valor a cFooter cambiarla por la siguiente.

Code: Select all  Expand view
cFooter := IF(::bStrFooter==NIL,::cFooter,Eval( ::bStrFooter ))  //Biel


El codigo para definir la columna
Code: Select all  Expand view
      oCol:=oBrw:AddCol()
      oCol:bStrData:= {|| oDbf:Campo }
      oCol:cHeader := 'Cabecera'
      oCol:bStrFooter:={||VisTot()}

Espero te sirva por lo menos como aproximacion para hacer lo que quieres.

PostPosted: Fri Sep 28, 2007 3:12 pm
by Ruben D. Fernandez
Gracias Biel...


Quedo trabajando en ello.

Saludos

Ruben Fernandez.

PostPosted: Mon Oct 15, 2007 2:41 pm
by pymsoft
Buenisimo, se podrá implementar en la clase original de FWH? asi no tenemos que modificarla en cada actualizacion.


Gracias

PostPosted: Mon Oct 15, 2007 2:51 pm
by Biel EA6DD
Contento de que os haya servido.
Como todos mis aportes al foro, esta a disposicón de Antonio para ser incluido en la clase original.

PostPosted: Mon Oct 15, 2007 2:51 pm
by pymsoft
El tema es que usando una ventana child, los footers quedan muy abajo y no se ven. Alguna idea de como subirlos?

PostPosted: Mon Oct 15, 2007 3:06 pm
by pymsoft
Ejemplo en la segunda ventana que está debajo:
Los footers estàn, pero no se ven...

Image
By pymsoft at 2007-10-15

PostPosted: Mon Oct 15, 2007 3:17 pm
by Biel EA6DD
Hola Pedro,
No he podido revisar el codigo fuente, me pillas que me estoy yendo de vacaciones unos dias a Barcelona. De todas formas, los footer, cuando hay valor en ellos, siempre debieran estar visibles.
Image

PostPosted: Mon Oct 15, 2007 3:50 pm
by pymsoft
Gracias por tu tiempo, veo que a ti te funciona, se ve que hago algo mal.


Saludos y buenas vacaciones.

PostPosted: Mon Oct 15, 2007 4:03 pm
by pymsoft
Bueno, ahora funciona.

lo unico que hice, fue poner uno de los footers como texto fijo

oCol:cFooter := "Totali:"

y ahora muestra todos.

PostPosted: Thu Nov 22, 2007 1:59 pm
by pymsoft
Antonio,


Se podrán implementar las modificaciones hechas por Biel para xbrowse, asi no hay que modificar la clase cada vez que actualizamos?


gracias


P.D. Hice las modificaciones en la xbrowse incluida en FWH0711 para poder poner los footers, pero no me muestra el estilo 2007, por lo que supongo que lo que descargué es anterior a las librerias que me enviaste mas tarde.

PostPosted: Thu Nov 22, 2007 8:31 pm
by Antonio Linares
Biel,

> Yo añadi un data a la clase TXBrwColumn, el data bStrFooter, que contiene un codeblock que nos debe retornar lo que queremos visualizar en el pie de la columna.

Implementado como bFooter, gracias! :-)