Page 1 of 1

LINEAS DOBLE EN BOX PARA UN REPORTE

Posted: Fri Apr 18, 2008 11:16 pm
by JHON JAIRO VALENCIA DIAZ
ABRIL 18 DE 2008



PARA ANTONIO LINARES
Y AMIGOS DEL FORUM



ESTOY HACIENDO UN REPORTE E INTENTO CREAR UN BOX, UNAS LINEAS
PERO LA QUIERO QUE ME SALGAN EN LINEAS DOBLES, Y COMO HAGO PARA QUE ESA LINEAS SEAN MAS GRUESAS O MAS INTENSAS. ESTOY UTILIZANDO EL FWH 7.01.

ESTE ES MI PRIMER REPORTE, PORQUE ESTOY DANDO MIS PRIMEROS PASOS EN FWH.

GRACIAS



JHON JAIRO VALENCIA
ARACATACA-COLOMBIA

clase tprinter

Posted: Sat Apr 19, 2008 11:10 pm
by Ramon Paredes
Jhon, con la clase Tprinter con el Metodo CmSay puedes hacer lo que quieras, cajas, lineas, etc. para que sean mas intensas o mas gruesas debes usar Pens ,dependiendo del tamaƱo del pen es el grosor de la linea

Saludes desde Managua Nicaragua,

Ramon Paredes

PROBLEMA CON REPORTE CON LINEA DOBLE

Posted: Sat Apr 26, 2008 7:13 pm
by JHON JAIRO VALENCIA DIAZ
GRACIAS RAMON

ENTIENDO LO QUE TU DICE PERO LO HAGO Y ME SALE UN ERROR, ADEMAS EL REPORTE SE LLEVA VARIAS PAGINAS Y ME SALE UNA SOLA
ESTE ES EL FUENTE

// More reports...

#include "FiveWin.ch"
#include "report.ch"
#define DMPAPER_A4 9 // A4 210 x 297 mm


STATIC oReport, oDlg
STATIC oFntCursiva, oFntPeque, oFntNormal, oFntNegrita, oFntarial14, oFntarial16, oFntarial20
STATIC oFntarial10, oFntarial12,oPrn


Function Main()
SetHandleCount(80)
REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
INDEXALUMNO()
DEFINE DIALOG oDlg TITLE "Prueba informes" ;
FROM 10,10 TO 19,50

@ 3,8.5 BUTTON "Imprimir" ;
DEFAULT OF oDlg ;
SIZE 50,15 ;
ACTION Report()

ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
//----------------------------------------------------------------------------//
Function Report()

* oPrn:SayBitmap(400, 200, "logo.bmp", 800, 420 )
*
LOCAL oFont1, oFont2, oFont3, oBmp, oPen1, oPen2
LOCAL nFila := 0
LOCAL nFila2 := 0
local no := 1
local snombre
PRINT oPrn NAME "Testing the printer object from FiveWin" PREVIEW


DEFINE FONT oFntCursiva NAME "ARIAL" SIZE 0,-9 ITALIC OF oPrn
DEFINE FONT oFntPeque NAME "ARIAL" SIZE 0,-7 OF oPrn
DEFINE FONT oFntNormal NAME "ARIAL" SIZE 0,-10 OF oPrn
DEFINE FONT oFntNegrita NAME "ARIAL" SIZE 0,-10 BOLD OF oPrn
DEFINE FONT oFntarial10 NAME "ARIAL" SIZE 0,-10 BOLD OF oPrn
DEFINE FONT oFntarial12 NAME "ARIAL CURSIVA" SIZE 0,-12 BOLD OF oPrn
DEFINE FONT oFntarial14 NAME "ARIAL" SIZE 0,-14 BOLD OF oPrn
DEFINE FONT oFntarial16 NAME "ARIAL CURSIVA" SIZE 0,-16 BOLD OF oPrn
DEFINE FONT oFntarial20 NAME "ARIAL CURSIVA" SIZE 0,-20 BOLD OF oPrn


DEFINE PEN oPen1 WIDTH 1
DEFINE PEN oPen2 WIDTH 2

oPrn:SetPage(9) // 9 indica formato A4
Page
cabeza()
nFila := 1000
nFila2 :=1045
dbSelectArea(1)
alumnos->(OrdSetFocus("codigo"))
go top
locate for alumnos->curso=="06-1"
do while .not. eof()
if alumnos->curso="06-1"
store substr(alumnos->nombre,1,30) to snombre
oPrn:Say(nfila, 40, str(no) , oFntarial10 )
oPrn:Say( nFila, 200, snombre, oFntPeque )
oPrn:Line(nfila2,80, nfila2, 2300 )
store no+1 to no
nFila += 50
nFila2 += 50
if no=30
nFila := 1000
nFila2 :=1045
cabeza()
endif
endif
SKIP
enddo
ENDPAGE
ENDPRINT
RETURN NIL
//----------------------------------------------------------//
STATIC Function cuadro()
LOCAL oBrush
oPrn:Box( 780, 80, 3000, 2300 )
oPrn:Line( 1000,80, 1000, 2300 )
oPrn:Line(780,199, 3000, 180 ) //1 primera fila,columna,segunda fila,columna
oPrn:Line(780,780, 3000, 760 ) //2 primera fila,columna,segunda fila,columna
oPrn:Line(880,980, 3000, 980 ) //3 primera fila,columna,segunda fila,columna
oPrn:Line(880,1180, 3000, 1180 ) //4 primera fila,columna,segunda fila,columna
oPrn:Line(880,1380, 3000, 1380 ) //5 primera fila,columna,segunda fila,columna
oPrn:Line(780,1590, 3000, 1590 ) //6 primera fila,columna,segunda fila,columna
oPrn:Line(780,1860, 3000, 1860 ) //7 primera fila,columna,segunda fila,columna
oPrn:Line(780,2100, 3000, 2100 ) //8 primera fila,columna,segunda fila,columna
oPrn:Line(880,780, 880, 1590 )
oPrn:Say(900, 100,"No" , oFntarial12 )
oPrn:Say(900, 200,"Apellidos y Nombres" , oFntarial12 )
oPrn:Say(800, 1000,"Codificacion" , oFntarial14 )
oPrn:Say(900, 800,"Codigo 1" , oFntarial10 )
oPrn:Say(900, 1000,"Codigo 2" , oFntarial10 )
oPrn:Say(900, 1200,"Codigo 3" , oFntarial10 )
oPrn:Say(900, 1400,"Codigo 4" , oFntarial10 )
oPrn:Say(840, 1680,"Vlr" , oFntarial10 )
oPrn:Say(900, 1610,"Cuantitativo" , oFntarial10 )
oPrn:Say(840, 1980,"Vlr" , oFntarial10 )
oPrn:Say(900, 1885,"Cualitativo" , oFntarial10 )
oPrn:Say(900, 2140,"Fallas" , oFntarial10 )
RETURN NIL
//----------------------------------------------------------//
STATIC Function cabeza()
cuadro()
oPrn:Say(100, 450,"Planilla de Calificaciones de los Estudiantes" , oFntarial16 )
oPrn:Say(200, 180,"Institucion Educativa Departamental Jhon F. Kenndy" , oFntarial20 )
oPrn:Say(300, 1000,"Sede" , oFntarial14 )
oPrn:Say(380, 1000,"Grado" , oFntarial14 )
oPrn:Say(460, 1000,"Area o Asignatura:" , oFntarial14 )
oPrn:Say(540, 1000,"Docente:" , oFntarial14 )
oPrn:Say(620, 1000,"Periodo:" , oFntarial14 )
RETURN NIL
//----------------------------------------------------------//
FUNCTION indexalumno()
//----------------------------------------------------------//
local oDlg
IF .NOT. FILE ("ALUMNOS.CDX")
USE ALUMNOS ALIAS ALUMNOS NEW
MsgMeter( { | oMeter, oText, oDlg, lEnd | ;
BuildIndex( oMeter, oText, oDlg, @lEnd, "alumnos->curso", "curso" ) },;
"Indexando Tabla de Alumnos por Nombre...", "Espere un momento" )
dbcloseArea()
ENDIF
USE ALUMNOS ALIAS ALUMNOS NEW
RETURN NIL

//----------------------------------------------------------//
STATIC FUNCTION BuildIndex( oMeter, oText, oDlg, lEnd, campo, bolsa )
//----------------------------------------------------------//
oMeter:nTotal = RecCount()
OrdSetFocus(0)
INDEX ON &(Campo) TAG &(Bolsa) ;
EVAL ( oMeter:Set( RecNo() ), SysRefresh(), ! lEnd )
RETURN NIL