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
LINEAS DOBLE EN BOX PARA UN REPORTE
- JHON JAIRO VALENCIA DIAZ
- Posts: 28
- Joined: Wed Mar 07, 2007 11:34 pm
- Location: COLOMBIA
- Contact:
- Ramon Paredes
- Posts: 215
- Joined: Fri Feb 02, 2007 3:38 pm
- Location: Managua, Nicaragua
clase tprinter
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
Saludes desde Managua Nicaragua,
Ramon Paredes
... Desde la Tierra de lagos y Volcanes......
- JHON JAIRO VALENCIA DIAZ
- Posts: 28
- Joined: Wed Mar 07, 2007 11:34 pm
- Location: COLOMBIA
- Contact:
PROBLEMA CON REPORTE CON LINEA DOBLE
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
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