ROUNDBOX

Post Reply
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

ROUNDBOX

Post 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
//////////////////////////////////////////////
Un saludo

Manuel
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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   
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post 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
Un saludo

Manuel
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post 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
Un saludo

Manuel
Post Reply