Inicio > Visual Fox Pro (API de Windows) > Impresión de texto vertical en los informes de VFP a través de imágenes generadas

Impresión de texto vertical en los informes de VFP a través de imágenes generadas


Impresión de texto vertical en los informes de VFP a través de imágenes generadas

SET PROCEDURE TO gdiplus ADDITIVE

LOCAL oListener As TListener
oListener = CREATEOBJECT(“TListener”)
DO GenerateData

* Crea tu propio informe como se muestra en la imagen de arriba
* no es necesario el control de imagen

REPORT FORM test OBJECT oListener NOCONSOLE
PROCEDURE GenerateData
CREATE CURSOR cs (firstname C(20), lastname C(30), city C(50),;
state C(2), zip C(7), mailtype C(50))

* preparacion de dados de prueba

INSERT INTO cs VALUES (“JONY”, “ARROYO”, “LIMA”, “TX”,;
“10251″, “First Class Mail and Periodicals”)

INSERT INTO cs VALUES (“ALDO”, “LADERAS”, “LIMA”, “TX”,;
“10252″, “Standard Mail “)

DEFINE CLASS TListener As ReportListener
#DEFINE IMAGE_WIDTH 180
#DEFINE IMAGE_HEIGHT 60
#DEFINE IMAGE_TARGETFILE SYS(2023)+”\barcode.bmp”
#DEFINE IMAGE_BACKCOLOR ARGB(255,255,255,255)
#DEFINE IMAGE_FORECOLOR ARGB(64,64,64,255)
#DEFINE IMAGE_FONT “Arial”
#DEFINE BARCODE_FORECOLOR ARGB(0,0,0,255)
#DEFINE BARCODE_FONT “barcod39″

ListenerType=1
InDetails=.F.
gdiplus=NULL
font1=NULL
font2=NULL
font3=NULL
matrix=NULL

PROCEDURE Init
ReportListener::Init()
THIS.gdiplus = CREATEOBJECT(“gdiplusinit”)
THIS.CreateFonts
THIS.CreateMatrix

PROTECTED PROCEDURE CreateFonts
LOCAL oFontcollection As gdifontcollection
oFontcollection = CREATEOBJECT(“gdifontcollection”)

LOCAL oFamily as gdifontfamily
oFamily = oFontcollection.GetFontFamily(BARCODE_FONT)

IF EMPTY(oFamily.familyname)
* fuente de codigo de barras que nose encuentran, tipos de letras que se utilizan
oFamily = oFontcollection.GetFontFamily(_screen.FontName)
THIS.font1 = CREATEOBJECT(“gdifont”, oFamily,;
14, 1, BARCODE_FORECOLOR)
ELSE
THIS.font1 = CREATEOBJECT(“gdifont”, oFamily,;
28, 0, BARCODE_FORECOLOR)
ENDIF

oFamily = oFontcollection.GetFontFamily(IMAGE_FONT)
THIS.font2 = CREATEOBJECT(“gdifont”, oFamily,;
8, 0, IMAGE_FORECOLOR)

oFamily = oFontcollection.GetFontFamily(IMAGE_FONT)
THIS.font3 = CREATEOBJECT(“gdifont”, oFamily,;
7, 0, IMAGE_FORECOLOR)

PROTECTED PROCEDURE CreateMatrix
THIS.matrix = CREATEOBJECT(“gdimatrix”)
THIS.matrix.Rotate(270)

PROCEDURE BeforeBand
LPARAMETERS nBandObjCode, nFRXRecNo
DODEFAULT(nBandObjCode, nFRXRecNo)
IF nBandObjCode = 4
THIS.InDetails=.T.
ENDIF

PROCEDURE Render(nFRXRecNo, nLeft,nTop,nWidth,nHeight,;
nObjectContinuationType, cContentsToBeRendered, GDIPlusImage)

IF THIS.InDetails
THIS.PrintBarcode(nLeft,nTop)
THIS.InDetails = .F.
ENDIF

DODEFAULT(nFRXRecNo, nLeft,nTop,nWidth,nHeight,;
nObjectContinuationType, ;
cContentsToBeRendered, GDIPlusImage)

PROTECTED PROCEDURE PrintBarcode(nLeft, nTop)
LOCAL cBarcode, cMailtype
cBarcode = ALLTRIM(cs.zip) + “-” + cs.state
cMailtype = ALLTRIM(cs.mailtype)

LOCAL oImage As gdibitmap, graphics As graphics
oImage = CREATEOBJECT(“gdibitmap”, IMAGE_WIDTH, IMAGE_HEIGHT)

WITH oImage
.graphics.FillRectangle(IMAGE_BACKCOLOR,;
0, 0, .imgwidth, .imgheight)

.graphics.DrawText(m.cBarcode,;
THIS.font1, 2, 5, .imgwidth, .imgheight)

.graphics.DrawText(ALLTRIM(m.cMailtype),;
THIS.font2, .imgwidth-70, 3, 68, .imgheight)

.graphics.DrawText(m.cBarcode,;
THIS.font2, 10, .imgheight-16, .imgwidth, 14)

.graphics.DrawText(MDY(DATE()),;
THIS.font3, .imgwidth-80, .imgheight-14, 78, 13)
ENDWITH

LOCAL oImage1 As gdibitmap
oImage1 = CREATEOBJECT(“gdibitmap”, IMAGE_HEIGHT, IMAGE_WIDTH)

WITH oImage1
.graphics.FillRectangle(IMAGE_BACKCOLOR,;
0, 0, .imgwidth, .imgheight)

.graphics.SetTransform(THIS.matrix)
.graphics.drawimage(oImage, -oImage.imgwidth, 0)

nResult = GdipDrawImageRectI(THIS.GDIPlusGraphics,;
.himage, 500, nTop-300, .imgwidth*10, .imgheight*10)
ENDWITH

ENDDEFINE

About these ads
  1. Mario
    5 febrero 2010 en 8:39 pm | #1

    Dónde encuentro el archivo gdiplus.prg requerido en la línea 1 del ejemplo?
    Gracias.

    • 8 febrero 2010 en 7:09 pm | #2

      Hola ya lo puse un entrada del blog para que lo puedas bajar.

      Saludos
      Ricardo

      • Gustavo Villalba
        8 enero 2013 en 2:17 pm | #3

        Buenos dias rahsuarez, encontre tu rutina para la impresion de textos en forma vertical, pero estoy necesitando el gdiplus.prg, serias tan amable de facilitarme. Gracias

      • 5 abril 2013 en 9:30 pm | #4

        si me pasas tu correo te lo envio

  2. rene cortes
    9 junio 2010 en 1:07 am | #5

    Hola amigo, no funciona el link me lo puedes mandar a mi correo. gracias
    jrenecortes@hotmail.com

    • 3 septiembre 2010 en 6:55 am | #6

      Hola,
      Necesitaría también el archivo gdiplus.prg que se utiliza en la primera línea del ejemplo para “Impresión de texto vertical en los informes de VFP a través de imágenes generadas”. ¿Podrías enviármelo a mi correo?

  3. Sebastian
    26 julio 2012 en 2:49 pm | #7

    Hola amigo, no encuentro la entrada del blog del gdiplus.prg. Podrias enviarmelo a sebacastro@gmail.com

  1. No trackbacks yet.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: