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

Post Reply
Ruben D. Fernandez
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

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

Post 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.
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post 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

  @ 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
Ruben D. Fernandez
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Post by Ruben D. Fernandez »

Gracias Jose Luis...

Pero... lo quiero hacer con xbrowse.

Saludos

Ruben Fernandez.
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post 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

cFooter := IF(::bStrFooter==NIL,::cFooter,Eval( ::bStrFooter ))  //Biel
El codigo para definir la columna

Code: Select all

      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.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
Ruben D. Fernandez
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Post by Ruben D. Fernandez »

Gracias Biel...


Quedo trabajando en ello.

Saludos

Ruben Fernandez.
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Buenisimo, se podrá implementar en la clase original de FWH? asi no tenemos que modificarla en cada actualizacion.


Gracias
Pedro Gonzalez
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post 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.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

El tema es que usando una ventana child, los footers quedan muy abajo y no se ven. Alguna idea de como subirlos?
Pedro Gonzalez
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post 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
Pedro Gonzalez
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post 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
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Gracias por tu tiempo, veo que a ti te funciona, se ve que hago algo mal.


Saludos y buenas vacaciones.
Pedro Gonzalez
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post 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.
Pedro Gonzalez
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post 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.
Pedro Gonzalez
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply