Page 1 of 1
xBrowse -> Footers Calculo de totales de esa columna??
Posted:
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.
Posted:
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
Posted:
Fri Sep 28, 2007 12:44 pm
by Ruben D. Fernandez
Gracias Jose Luis...
Pero... lo quiero hacer con xbrowse.
Saludos
Ruben Fernandez.
Posted:
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.
Posted:
Fri Sep 28, 2007 3:12 pm
by Ruben D. Fernandez
Gracias Biel...
Quedo trabajando en ello.
Saludos
Ruben Fernandez.
Posted:
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
Posted:
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.
Posted:
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?
Posted:
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...
By
pymsoft at 2007-10-15
Posted:
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.
Posted:
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.
Posted:
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.
Posted:
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.
Posted:
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!