Page 1 of 1
ROUNDBOX
Posted: Fri Apr 14, 2006 10:36 am
by Manuel Valdenebro
Probando ROUNDBOX() y BOX() con una determinadas coordenadas, compruebo que RoundBox escribe mucho mas abajo. ¿Cual es el problema?
///////////////////////////////////////////
Func RCaja(nArriba,nIzq,nAbajo,nDerecha,nAncho,nAlto,oPen, oPrn)
Local xCor := {} , yCor := {}
// Pasamos coordenadas de cms a pixel
xCor := oPrn:Cmtr2Pix(nArriba,nIzq)
yCor := oPrn:Cmtr2Pix(nAbajo,nDerecha)
oPrn:RoundBox(xCor[1],xCor[2],yCor[1],yCor[2],nAncho,nAlto,oPen)
oPrn:Box (xCor[1],xCor[2],yCor[1],yCor[2],oPen)
return NIL
//////////////////////////////////////////////
Posted: Fri Apr 14, 2006 6:47 pm
by Antonio Linares
Manuel,
En este ejemplo, salen en la misma posición:
Code: Select all
#include "FiveWin.ch"
function Main()
local oPrn
PRINTER oPrn PREVIEW
PAGE
oPrn:RoundBox( 10, 10, 500, 500 )
oPrn:Box( 10, 10, 500, 500 )
ENDPAGE
ENDPRINTER
return nil
Posted: Fri Apr 14, 2006 8:14 pm
by Manuel Valdenebro
Antonio,
Aqui tienes el código de los samples testprn4 y testprn3, incluyendo dos lineas de codigo con Box y RoundBox.- Las cajas salen en diferentes sitios.
///////////////////////////////////////////////////////////////////////////
// Printing images
#include "FiveWin.ch"
//----------------------------------------------------------------------------//
function Main()
local oPrn
PRINT oPrn PREVIEW
PAGE
oPrn:SayBitmap( 1, 1, "..\bitmaps\fivewin.bmp" )
oPrn:Box (657, 3329,1816, 4581 )
oPrn:RoundBox(657, 3329,1816, 4581 )
ENDPAGE
ENDPRINT
return nil
/////////////////////////////////////////////////////////////////////////
// Printing in portrait and in landscape
#include "fivewin.ch"
#define PAD_LEFT 0
#define PAD_RIGHT 1
#define PAD_CENTER 2
function Main()
local oPrn, oFont, oPen
Local nLinI, nColI, nLinF, nColF
PRINT oPrn NAME "Impresión en Vertical.." PREVIEW
DEFINE FONT oFont NAME "Arial" SIZE 0, -10 BOLD OF oPrn
DEFINE PEN oPen WIDTH 2 OF oPrn
oPrn:SetPage(9) // A4
oPrn:SetPortrait() //Vertical
PAGE
nLinI := 0.90
nColI := 0.90
nLinF := 28.6
nColF := 20.0
oPrn:Cmtr2Pix(@nLinI, @nColI)
oPrn:cmtr2Pix(@nLinF, @nColF)
oPrn:Box(nLinI, nColI, nLinF, nColF, oPen )
oPrn:cmSay( 1.0, 1.0, "Superior Izquierda", oFont,,CLR_BLACK,,PAD_LEFT )
oPrn:cmSay( 1.0, 10.5, "Superior Centro", oFont,,CLR_BLACK,,PAD_CENTER )
oPrn:cmSay( 1.0, 20.0, "Superior Derecha", oFont,,CLR_BLACK,,PAD_RIGHT )
oPrn:cmSay(28.0, 1.0, "Inferior Izquierda", oFont,,CLR_BLACK,,PAD_LEFT )
oPrn:cmSay(28.0, 10.5, "Inferior Centro", oFont,,CLR_BLACK,,PAD_CENTER )
oPrn:cmSay(28.0, 20.0, "Inferior Derecha", oFont,,CLR_BLACK,,PAD_RIGHT )
oPrn:Box (657, 3329,1816, 4581 )
oPrn:RoundBox(657, 3329,1816, 4581 )
ENDPAGE
ENDPRINT
PRINT oPrn NAME "Impresion Horizontal..." PREVIEW
DEFINE FONT oFont NAME "Arial" SIZE 0, -10 BOLD OF oPrn
DEFINE PEN oPen WIDTH 2 OF oPrn
oPrn:SetPage(9) //a4
oPrn:SetLandscape() // HORIZONTAL
PAGE
nLinI := 0.90
nColI := 0.90
nLinF := 20.1
nColF := 28.6
oPrn:Cmtr2Pix(@nLinI, @nColI)
oPrn:cmtr2Pix(@nLinF, @nColF)
oPrn:Box(nLinI, nColI, nLinF, nColF, oPen )
oPrn:cmSay( 1.0, 1.0, "Superior Izquierda", oFont,,CLR_BLACK,,PAD_LEFT )
oPrn:cmSay( 1.0, 14.8, "Superior Centro", oFont,,CLR_BLACK,,PAD_CENTER )
oPrn:cmSay( 1.0, 28.0, "Superior Derecha", oFont,,CLR_BLACK,,PAD_RIGHT )
oPrn:cmSay(19.5, 1.0, "Inferior Izquierda", oFont,,CLR_BLACK,,PAD_LEFT )
oPrn:cmSay(19.5, 14.8, "Inferior Centro", oFont,,CLR_BLACK,,PAD_CENTER )
oPrn:cmSay(19.5, 28.0, "Inferior Derecha", oFont,,CLR_BLACK,,PAD_RIGHT )
ENDPAGE
ENDPRINT
return nil
Posted: Fri Apr 14, 2006 11:51 pm
by Antonio Linares
Manuel,
El método Box() usa los parámetros en un orden distinto, por lo que has de llamarlos así:
oPrn:Box (3329, 657, 4581, 1816 ) // cambian 1-2, 3-4
oPrn:RoundBox(657, 3329,1816, 4581 )
Podriamos hacer que los usasen de igual forma, pero a estas alturas podriamos romper el código de muchos usuarios.
Posted: Sat Apr 15, 2006 6:40 am
by Manuel Valdenebro
Antonio, ahora si funciona. Sería conveniente modificar el fichero de ayuda de la clase Tprinter, y aprovechar para darle una nueva redacción (tanto a RoundBox como a Box) un poco mas clara.
Por si alguien lo necesita, a continuación indico las funciones que utilizo para Box y RoundBox en centímetros y que tengo en mi librería personal:
//////////////////////////////////////////////////
///
/// Box en centimetros para imprimir
/// NCaja (oPrn, nArriba, nIzq, nAbajo, nDerecha, [oPen], [oBrush])
///
///////////////////////////////////////////////////
Func NCaja(oPrn, nArriba,nIzq,nAbajo,nDerecha,oPen,oBrush)
Local xCor := {} , yCor := {}
xCor := oPrn:Cmtr2Pix(nArriba,nIzq)
yCor := oPrn:Cmtr2Pix(nAbajo,nDerecha)
IF oBrush = nil
oPrn:Box(xCor[1],xCor[2],yCor[1],yCor[2],oPen)
ELSE
oPrn:FillRect({xCor[1],xCor[2],yCor[1],yCor[2]},oBrush)
ENDI
return NIL
//////////////////////////////////////////////////
///
/// Box redondeada en centímetros para imprimir
/// RCaja (oPrn, nArriba, nIzq, nAbajo, nDerecha, nAncho, nAlto, [oPen], [nColor])
/// nAncho y nAlto ancho y alto del arco, por ejemplo 150,150
/// nColor rellena con ese color la caja
///////////////////////////////////////////////////
Func RCaja(oPrn, nArriba, nIzq, nAbajo, nDerecha, nAncho, nAlto, oPen, nColor )
Local xCor := {} , yCor := {}
xCor := oPrn:Cmtr2Pix(nArriba,nIzq)
yCor := oPrn:Cmtr2Pix(nAbajo,nDerecha)
oPrn:RoundBox(xCor[2],xCor[1],yCor[2],yCor[1],nAncho,nAlto,oPen, nColor )
return NIL