Hola invitado         31 Jul, 2010 - 07:49
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Imprimir imágenes individuales (Cesar Chalom) Traducción lecturas 4650
 Enviado por amby en Lunes, 28 Agosto, 2006
Rutinas Muestra un código cuyo objetivo es imprimir archivos de imagen.

Imprimir imágenes individuales


Artículo original: PRINT INDIVIDUAL IMAGES
http://weblogs.foxite.com/cesarchalom/archive/2006/05/16/1531.aspx
Autor: Cesar Chalom (http://weblogs.foxite.com/cesarchalom)
Traducido por: Ana María Bisbé York (amby@telefonica.net)
Para: PortalFox (http://www.portalfox.com)


He visto en la Web algunos ejemplos que muestran cómo imprimir imágenes individuales directamente a la impresora. No se por qué; pero en algunas situaciones los ejemplos no funcionan. Posiblemente o probablemente sea ¿un bug del desarrollador? :(

Una de las formas más sencillas y seguras para hacer esta tarea es utilizar el Diseñador de informes nativo, y dejar que VFP se encargue de todo el proceso de impresión.

Debajo hay un ejemplo que recibe un archivo de imagen como un parámetro, crea el informe al vuelo, y agrega un objeto imagen OLE que va a imprimir la imagen seleccionada.

Este ejemplo se basa totalmente en MSKB 895602 "How to print pictures and how to display pictures that are stored in a Blob field in Visual FoxPro 9.0". El código adaptado debe trabajar en cualquier versión de VFP. Gracias a Trevor Hancock y MSDN. El código es fácil de entender. Puede cambiar fácilmente la posición de la imagen cambiando los valores HPOS y VPOS. Si quiere un ejemplo y necesita más información, vea en la Ayuda de VFP el tópico "Understanding and Extending Report Structure"

Guarde el código como PRINTIMAGE.PRG

Para imprimir una imagen, sólo hay que llamar PRINTIMAGE(GETPICT())

LPARAMETERS tcImage
*tcImage = GETPICT()
*--------------------------------------------------------
* Código VFP que muestra cómo imprimir archivos de imagen.
* Código adaptado del artículo 895602 de Microsoft Knowledge Base
* http://support.microsoft.com/kb/895602
*
* La mayor parte de este código y los comentarios son de
* Trevor Hancock, de MS
*--------------------------------------------------------
LOCAL lnArea
lnArea = SELECT()
CREATE CURSOR ReportTemp (ImageFile c(150))
INSERT INTO ReportTemp VALUES (tcImage)
*-- Llama a una función que crea un informe por programación.
*-- Se incluye aquí sólo para garantizar que este ejemplo se puede
*-- ejecutar tal cual, sin pedir al desarrollador que cree un
*-- informe manualmente.
MakeReport()
*-- Asegura que el cursor esté seleccionado,
*-- y luego ejecuta la Presentación preliminar del informe
*-- utilizando para ello, una instancia de nuestro Report Listener.
SELECT ReportTemp
REPORT FORM ___ImageReport PREVIEW
DELETE FILE "___ImageReport.fr*"
SELECT (lnArea)
RETURN
*--------------------------------
*-- Esta función crea un informe por programación
*-- con un control OLE Dependiente y otros archivos. Se incluye solamente
*-- con el propósito de demostrar su funcionamiento para que este
*-- código pueda ser ejecutado tal cual.
*-- Normalmente, usted creará su propio informe manualmente utilizando
*-- el diseñador de informes.
FUNCTION MakeReport
CREATE REPORT ___ImageReport FROM ReportTemp
*-- Abre el archivo de informe (FRX) como una tabla.
USE ___ImageReport.FRX IN 0 ALIAS TheReport EXCLUSIVE
SELECT TheReport
*-- Elimina del FRX las etiquetas y campos auto generados
DELETE FROM TheReport WHERE ObjType = 5 AND ObjCode = 0 && Elimina las etiquetas
DELETE FROM TheReport WHERE ObjType = 8 AND ObjCode = 0 && Elimina los campos
*-- Agrega un control Picture/OLE Dependiente al informe añadiendo un registro
*-- con los valores apropiados. Es más fácil de ver qué valores se
*-- corresponden con los campos
*-- GATHER NAME para añadir el registro (al comparar con un comando
*-- SQL-INSERT) utilizando un objeto basado en la clase EMPTY y más tarde el comando
LOCAL loNewRecObj AS EMPTY
loNewRecObj = NEWOBJECT( 'EMPTY' )
ADDPROPERTY( loNewRecObj, 'PLATFORM', 'WINDOWS' )
ADDPROPERTY( loNewRecObj, 'Uniqueid', SYS(2015) )
ADDPROPERTY( loNewRecObj, 'ObjType', 17 ) && "Control Picture/OLE Dependiente "
ADDPROPERTY( loNewRecObj, 'NAME', 'ReportTemp.ImageFile' ) && Referencia de objeto al objeto IMAGE.
ADDPROPERTY( loNewRecObj, 'Hpos', 100)
ADDPROPERTY( loNewRecObj, 'Vpos', 600)
ADDPROPERTY( loNewRecObj, 'HEIGHT', 100000)
ADDPROPERTY( loNewRecObj, 'WIDTH', 100000)
ADDPROPERTY( loNewRecObj, 'DOUBLE', .T. ) && La imagen se centra en el control "Picture/OLE Dependiente"
ADDPROPERTY( loNewRecObj, 'Supalways', .T. )
*-- Para el control Picture/OLE Dependiente, el contenido del campo OFFSET especifica si
*-- Nombre de archivo (0), Nombre de campo General (1), o Expresión (2) es la fuente.
ADDPROPERTY( loNewRecObj, 'Offset', 2 )
*-- Añade el registro del control Picture/OLE Dependiente al informe.
APPEND BLANK IN TheReport
GATHER NAME loNewRecObj MEMO
*-- Realiza la limpieza y cierra la tabla del informe.
PACK MEMO
USE IN SELECT( 'TheReport' )
ENDFUNC


 Versión imprimible  
Imprimir imágenes individuales (Cesar Chalom) Traducción | Entrar/Crear una cuenta | 0 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.



Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.