FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Lineas de separacion en un Report
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 10:33 AM

Utilizo FWH 2.6 + Harbour. Para separar columnas de un report mediante una linea vertical hago:

COLUM TITLE "Mi titulo 1" DATA ......... GRID 1
COLUM TITLE "Mi titulo 2" DATA ........ GRID 1

驴C贸mo puedo separar las lineas con una linea horizontal? (GRID 0 y GRID 2 dan "Error de acceso a array")
驴Alguien sabe alguna forma de pintar las rows del report alternativamente con fondo gris (como SHADOW) y blanco?

Gracias,

Rafael

Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 11:40 AM

Buscando en los foros he encontrado respuesta a un par de mis preguntas:
1.- GRID 0 y GRID 2 exigen definir PEN en el report
2.- Para lineas de separaci贸n horizontal: ON CHANGE oReport:Separator() (Gracias, Paul - http://fivetechsoft.com/forums/viewtopi ... +separator)

Sigue en pie la pregunta sobre lineas de colores alternados
Saludos, Rafael

Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 12:07 PM

Rafael

justo despues de definir las column del report y antes del END REPORT
tecleas

oReport:CellView()

y listo!!

Un saludo
LORENZO

Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 12:21 PM

ups.... se me olvid贸 decirte que para alternar colores o sombras horizontales debes jugar con los "SHADOW" de cada columna. Es decir:

...
column title 'M铆nimo' data str(minimo,6) SHADOW font 2 right grid
...
activate report infor ON STARTLINE versombra(infor)
...
...
funct versombra(infor)
Local nVeces
IF infor:aColumns[1]:lShadow
FOR nVeces := 1 TO Len(infor:aColumns)
infor:aColumns[nVeces]:lShadow := .F.
NEXT
ELSE
FOR nVeces := 1 TO Len(infor:aColumns)
infor:aColumns[nVeces]:lShadow := .T.
NEXT
ENDIF
RETURN NIL

y listo el pollo! el resultado final es bastante atractivo.
Un saludo.
LORENZO

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 02:03 PM

Hola Lorenzo

Estuve probando lo que recomiendas, y me funcion贸 perfecto, de hecho est谩 muy bueno.
Pero como siempre uno quiere un poco m谩s, me surgi贸 una duda.
Si quisiera en vez de intercambiar entre fila y fila del report entre otros colores distintos al gris y el blanco?
Qu茅 deber铆a agregar?
Desde ya muchas gracias
Saludos, Esteban

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 02:55 PM

Lorenzo:
Lo prob茅 y funcion贸 de maravilla. Muchas gracias
Rafael

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 03:16 PM
Esteban, Rafael:

Para poner la sombra en color, de hecho no es una sombra se trata de pintar un rect谩ngulo con el color que desees, yo lo hago as铆, si no recuerdo mal es un aporte de The Full.

oReporte:bStartLine := {|o|IF(gMarca:nCounter % 2 == 0,SHADOWROW(o),)}

y esta es la funci贸n ShadowRow()

FUNCTION ShadowRow(oRep)
LOCAL nCols := LEN(oRep:aCols)
LOCAL nLine := IF(EMPTY(oRep:nDataLine),1,oRep:nDataLine)

IF oRep:oShdBrush == NIL
DEFINE BRUSH oRep:oShdBrush COLOR oRep:nClrShadow
ENDIF

SetBkMode(oRep:hDCOut,1)

oRep:FillRect( {oRep:nRow + 1,;
oRep:aCols[1],;
oRep:nRow + 1 + oRep:aDataHeight[nLine],;
oRep:aCols[nCols] + oRep:aColumns[nCols]:nWidth},;
oRep:oShdBrush)
RETURN (NIL)

Aqu铆 pueden ver una imagen de lo obtenido

http://img183.imageshack.us/my.php?image=clip2xa3.jpg
http://img183.imageshack.us/img183/926/clip2xa3.jpg


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 05:32 PM

Armando:
Muchas gracias por tu soluci贸n. Funciona perfectamente pero 驴c贸mo lo haces para que el header de cada grupo no se marque en color (cuando le toque una linea par)?
Rafael

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 05:42 PM

Rafael:

No me he topado con un problema as铆, seguramente es porque el reporte se imprime cuando el usuario elige solo una marca de repuesto entonces no hay un nuevo grupo en todo el reporte.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 05:45 PM

Armando:

Muy buena tu soluci贸n funciona perfectamente para lo que yo estoy haciendo.
Desde ya muchas gracias.
Saludos, Esteban.

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Lineas de separacion en un Report
Posted: Thu Aug 02, 2007 06:07 PM

Armando:
Bueno; lo de los headers tampoco tiene demasiada importancia. Har茅 algunas pruebas m谩s y veremos si saco algo en claro. Muchas gracias otra vez.
Rafael

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Lineas de separacion en un Report
Posted: Fri Aug 03, 2007 04:34 PM
Armando:

Me surgi贸 una dudita m谩s respecto a el tema de pintar las l铆neas de un report.
Yo cuando estoy activando el Report, en ON INIT voy a otra funci贸n donde ah铆 imprimo l铆nea por l铆nea.
He probado la funci贸n para pintar las l铆neas pero pinta todo, es decir no pinta l铆nea por medio.

....

oReport:CellView()
oReport:bStartLine := {|oReport|IF(oReport:nCounter % 2 =0,PintaLi(oReport),)} 

ACTIVATE REPORT oReport ON INIT ListDiaEnfer2(oReport,vMes,vAni,vDes,vHas,oDbf)
...
Return nil
//

//
Function ListDiaEnfer2(oReport,vMes,vAni,vDes,vHas,oDbf)

DO WHILE !oDbf:Eof()
   oReport:StartLine()
       oReport:Say( 1 , oDbf:NOMBRE , 1 , 1 )
   oReport:EndLine()
   oDbf:Skip()
ENDDO
Return nil
//

Pinta todo como si fuera una misma l铆nea.
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Lineas de separacion en un Report
Posted: Fri Aug 03, 2007 04:58 PM

Esteban:

Ummm, no entiendo para que utilizas la funci贸n ListDiaEnfer()
si la Clase TReport ya utiliza un DO WHILE para imprimir todos los registros de la DBF activa.

Podr铆as mostrar m谩s c贸digo para ver como defines las columnas ?

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Lineas de separacion en un Report
Posted: Fri Aug 03, 2007 05:10 PM
REPORT oReport TITLE Titulo CENTER;
       HEADER Empresa,Titulo2,Titulo3 LEFT;
       FOOTER "Fecha:"+DTOC(Date())+" Hora:"+Time()+" Pagina:"+STR(oReport:nPage,3) RIGHT;
       FONT oFont1,oFont2,oFont3,oFont4;
       PREVIEW;
       CAPTION "Vista previa del listado"


COLUMN TITLE "C贸digo"          DATA " " CENTER SIZE 10
COLUMN TITLE "Emplado"         DATA " " CENTER SIZE 40
COLUMN TITLE "D铆as Enfermo"    DATA " " CENTER SIZE 10

ENDREPORT

oReport:oTitle:aFont[1]        :={|| 4}
oReport:oHeader:aFont[1]       :={|| 3}
oReport:oHeader:aFont[2]       :={|| 3}
oReport:oHeader:aFont[3]       :={|| 3}
oReport:aColumns[ 1]:bTitleFont:={|| 3}
oReport:aColumns[ 2]:bTitleFont:={|| 3}
oReport:aColumns[ 3]:bTitleFont:={|| 3}

oReport:CellView()

ACTIVATE REPORT oReport ON INIT ListDiaEnfer2(oReport,vMes,vAni,vDes,vHas)

DBCLOSEALL()
oFont1:End()
oFont2:End()
oFont3:End()
oFont4:End()
Return nil
//


Lo hago de esta forma porque dentro del DO WHILE necesito realizar otros procesos por cada empleado.
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Lineas de separacion en un Report
Posted: Fri Aug 03, 2007 06:03 PM

Esteban:

Ok, podr铆as intentar dejando que la TReport haga su ciclo normal solo para probar si con eso se soluciona el problema del pintado, pues no veo otra raz贸n.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero