Page 1 of 1
empezando con easyPreview
Posted: Sat Aug 23, 2014 3:45 pm
by mastintin
El siguiente paso es enlazar el easypreview ...
Me pide un archivo que se llama wpdf.h que no viene en el código
He retocado algunos errores :
En Epmeta.prg he retocado el codigo de estas funciones para quitar los errores .
Code: Select all
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
HB_FUNC(EP_PLAYENHMETAFILE)
{
RECT rect;
HENHMETAFILE hemf =(HENHMETAFILE) hb_parnl( 2 );
HDC hDC = ( HDC ) hb_parnl( 1 );
// GetEnhMetaFileHeader( hemf, sizeof( mh ), &mh ) ;
if( hb_parl( 4 ) )
{
rect.left = 0;
rect.top = 0;
rect.right = GetDeviceCaps( ( HDC ) hb_parnl( 1 ), HORZRES );
rect.bottom = GetDeviceCaps( ( HDC ) hb_parnl( 1 ), VERTRES );
}
else
if (HB_IS_ARRAY(3))
{
rect.left = hb_parvni( 3, 1 );
rect.top = hb_parvni( 3, 2 );
rect.right = hb_parvni( 3, 3 );
rect.bottom = hb_parvni( 3, 4 );
}
else
// GetClientRect( WindowFromDC( hDC ), &rc );
GetClientRect ( (HWND)hb_parnl( 3 ), &rect );
hb_retl( PlayEnhMetaFile( hDC, hemf, ( LPRECT ) &rect ) );
}
//------------------ ------------------------//
HB_FUNC(ENHMETASIZE)
{
HENHMETAFILE hemf = (HENHMETAFILE) hb_parnl( 1 );
INT sizetyp = hb_parni( 2 );
ENHMETAHEADER mh ;
RECTL rect ;
GetEnhMetaFileHeader( hemf, sizeof( mh ), &mh ) ;
if (sizetyp == 1 ) // Size in Pixel
rect = mh.rclBounds ;
else
rect = mh.rclFrame ; //Size in 0.1 mm
hb_reta( 4 );
hb_storvni(rect.left , -1, 1 );
hb_storvni(rect.top , -1, 2 );
hb_storvni(rect.right , -1, 3 );
hb_storvni(rect.bottom, -1, 4 );
}
//------------------ ------------------------//
Re: empezando con easyPreview
Posted: Sat Aug 23, 2014 7:44 pm
by mastintin
He subido al repositorio de easypreview un archivo wpdf.h por si alguien lo quiere , supongo que es el que necesitamos .
Ahora me lanza 12 errores al compilar wpdf.c ...
Saludos a todos.
Re: empezando con easyPreview
Posted: Sat Aug 23, 2014 8:50 pm
by lucasdebeltran
Manuel,
Ese código no es necesario y es del módulo nativo de EasyPreview para exportar en PDF.
Edita epreview.prg y cambia el nombre de la función rpreview a otro. Entonces la función de preview del diseñador usara el de Fivewin. Prueba.
Re: empezando con easyPreview
Posted: Sun Aug 24, 2014 7:28 am
by mastintin
lucasdebeltran wrote:Manuel,
Ese código no es necesario y es del módulo nativo de EasyPreview para exportar en PDF.
Edita epreview.prg y cambia el nombre de la función rpreview a otro. Entonces la función de preview del diseñador usara el de Fivewin. Prueba.
Pues no resuelve el tema
.
Al dar a imprimir en easyreport tenemos 2 opciones o llamar a otro exe llamado "ERSTART.EXE" y ejecutarlo ( el cual también tendremos que reconstruir ) o usar la clase epreview ( epclass.prg ) si enlazo este prg es cuando empieza a encadenar llamadas a tpdf , a mypdf , etc ... solo con el cambio de rpreview no resolvemos .
Gracias por la ayuda .... seguiremos investigando .
Re: empezando con easyPreview
Posted: Sun Aug 24, 2014 10:15 am
by cnavarro
A ver si ayuda, independientemente de lo que comenta Lucas
Code: Select all
#define IPT_SELECT 0x000 //
#define IPT_WMF 0x001 // Windows-Metafile
#define IPT_DXF 0x002 // AUTOCAD DXF-
#define IPT_EPS 0x004 // Encapsulated PostScript EPS
#define IPT_BMP 0x008 // Windows-Bitmapfile
#define IPT_TIF 0x010 // TIFF 5.0
#define IPT_GIF 0x020 // Compuserve GIF
#define IPT_PCX 0x040 // PCX
#define IPT_JPG 0x080 // JPEG-File
#define IPT_PNG 0x100 // PNG (Portable network Graphic)
#define IPT_EMF 0x200 // EMF (Enhanced Windows MetaFile)
#define IPT_JPC 0x1000 // JPEG-2000 Code Stream Syntax (ISO/IEC 15444-1)
#define IPT_JP2 0x2000 // JPEG-2000 JP2 File Format Syntax (ISO/IEC 15444-1)
#define IPT_PGX 0x4000 // JPEG-2000 VM Format
#define IPT_RAS 0x8000 // Sun Rasterfile (RAS)
#define IPT_PNM 0x10000 // Portable Anymap (Graymap/Pixmap/Bitmap) (PNM, PGM, PPM)
#define IPT_FLT 0x800 //
#define IPE_OK 0 //
#define IPE_ABORT 1 //
#define IPE_WRONGTYPE 2 //
#define IPE_CORRUPTED 3 //
#define IPE_CLOSE 4 //
#define IPE_OPEN 5 //
#define IPE_WRITE 6 //
#define IPE_EOF 7 //
#define IPE_NOMEM 8 //
#define IPE_UNSUPPORTED 9 //
#define IPE_MAX256 10 //
#define IPE_REENTERED 11 //
#define IPE_PARAM 12 //
#define IPE_ERRINFLT 13 //
#define IPE_ERRNOFLT 14 //
#define IPE_ERRTEXTFLT 15 //
#define IPE_NOLICENSE 16 //
#define IPE_LAST 32 //
#define IPF_MSGBOX 0x1L //
#define IPF_DIB 0x8L //
#define IPF_META 0x10L //
#define IPF_ENH 0x800L //
#define IPF_COMPRESS 0x2L //
#define IPF_TIFF_APPEND 0x200000L // TIFF-Write: Append Page to existing TIF file.
#define IPF_TIFF_COMPMETHOD 0x300000e0 // TIFF-Write Compression Modes
#define IPF_TIFF_NOCOMP 0x00000020 // TIFF-Write: Uncompressed
#define IPF_TIFF_LZW 0x00000040 // TIFF-Write: LZW
#define IPF_TIFF_CCITTRLE 0x00000060 // TIFF-Write: CCITT
#define IPF_TIFF_CCITTFAX3 0x00000080 // TIFF-Write: CCITT G3 Fax Compression
#define IPF_TIFF_CCITTFAX4 0x000000a0 // TIFF-Write: CCITT G4 Fax Compression
#define IPF_TIFF_PACKBITS 0x000000c0 // TIFF-Write: PACKBITS
#define IPF_TIFF_JPEG 0x000000e0 // TIFF-Write: JPEG
#define IPF_TIFF_DEFLATE 0x10000000 // TIFF-Write: Deflate (zlib)
#define IPF_QUALITY 0xF000L // JPEG- 0x1000: 0x9000
#define IPF_LOWQUALITY 0x3000L // JPEG
#define IPF_INTERLACED 0x10000L // PNG/GIF-Write: Write in interlaced Mode
#define IPF_PNG_INTERLACED IPF_INTERLACED // Obsolete
#define IPF_FILEDIALOG 0x4L //
#define IPF_NOPROGRESSBAR 0x100L //
#define IPF_NOWAIT IPF_NOPROGRESSBAR //
#define IPF_NOWARNINGS 0x200L //
#define IPF_ALLOWLZW 0x400L //
#define IPF_ZLIB_MASK 0xc0000000
#define IPF_ZLIB_DEFAULT_COMPRESSION 0x00000000 // Medium Speed, Medium compression rate for Deflate-Algorithm
#define IPF_ZLIB_BEST_SPEED 0x40000000 // High Speed, Low compression rate for Deflate-Algorithm
#define IPF_ZLIB_BEST_COMPRESSION 0xc0000000 // Low Speed, High compression rate for Deflate-Algorithm
#define IPF_UNUSED 0x0fde0000 // IPF_xxxx Bits,
//------------------- Flags for DXF-Import -----------------------
#define IPDXF_BLACKONLY 0x00000001L // Import all DXF-Elements as black
#define IPDXF_IGNOREEXTMINMAX 0x00000002L //
#define IPDXF_EXTENDED 0x00000004L //
//------------------- Flags for Import DIB-Type selection --------
# define IPDIBF_IMPORT_32BIT 0x00020000L//
# define IPDIBF_ALLOW_IMPORT_CMYK 0x00080000L//
# define IPDIBF_ALLOW_IMPORT_48BIT 0x00100000L//
# define IPDIBF_ALLOW_IMPORT_RGBA 0x00400000L//
#define IPDIBF_NORMALIZE 0x00800000L//
#define IPM_WARNING 1
#define IPM_ERROR 2
Este es el fichero que he construido
https://navarro_cristobal@bitbucket.org ... iew_n1.git (en descargas)
A partir de lo que he encontrado en:
http://www.herdsoft.com/ftp/downloads.html#davinci
Re: empezando con easyPreview
Posted: Sun Aug 24, 2014 6:36 pm
by lucasdebeltran
Manuel,
Acabo de actualizar del repositorio y sin hacer nada me sale correctamente el Print/Preview:
Y he visto que en source\easyprev.prg rpreview() está comentada a ER_Preview().
Lo que si salen diversos warnings al compilar.
Es más, si suprimes del make EasyReport #easyprev.prg.
Y de source\ereport.prg y source\erstart.prg estás llamadas:
Code: Select all
//EP_TidyUp()
//EP_LinkedToApp()
//EP_SetPath( ".\" )
Todo funciona sin problemas.
La clase de impresión de los Reportes es Vrd; source\vrd.prg y el comando es:
EASYREPORT <oVRD> ;
NAME <cRptFile> ;
[ PREVIEW <lPreview> ] ;
[ TO <cPrinter> ] ;
[ OF <oWnd> ] ;
[ <lModal: MODAL> ] ;
[ <lPrintIDs: PRINTIDS> ] ;
[ <lNoPrint: NOPRINT> ] ;
[ <lNoExpr: NOEXPR> ] ;
[ CHECK <lCheck> ] ;
[ AREAPATH <cAreaPath> ] ;
[ PRINTDIALOG <lPrDialog> ] ;
[ COPIES <nCopies> ] ;
[ PRINTOBJECT <oPrn> ] ;
[ PAPERSIZE <aSize> ] ;
[ TITLE <cTitle> ] ;
[ PREVIEWDIR <cPrevDir> ] ;
[ AUTOPAGEBREAK <lAutoBreak> ] ;
[ SHOWINFO <lShowInfo> ] ;
Por defecto, usa el preview de Fivewin.
Respecto a EasyPreview, actualmente el Preview de Fivewin hace lo mismo y más cosas. El código fuente de Timm podría ser interesante por si las correcciones a la generación de los MetaFiles son interesantes y, sobre todo, porque generaba PDFS de forma nativa. Como yo no se C no puedo valorar la calidad de tal código.
Ah, y muchas gracias por el esfuerzo que estáis haciendo.
Re: empezando con easyPreview
Posted: Sun Aug 24, 2014 8:28 pm
by mastintin
lucasdebeltran wrote:Manuel,
Acabo de actualizar del repositorio y sin hacer nada me sale correctamente el Print/Preview:
Efectivamente son los _ que se han hecho para que funcione "de urgencia" , y se pueda utilizar e ir reportando errores . Aun faltan muchas cosas que se han comentado y mucho código que se esta enlazando que sobra , también código que mirar por si es interesante para mejorar el producto , pero ya parece que funciona, eso si, no totalmente estable .
Re: empezando con easyPreview
Posted: Sun Aug 24, 2014 9:55 pm
by Antonio Linares
Manuel,
Sencillamente espectacular
Mi mas sincera enhorabuena!
Esta mañana pude dedicarle un rato, luego ya tuve que marcharme para hacer cosas, la familia, etc. y cuando he regresado ahora y lo he visto, me he quedado realmente asombrado!
Ahora falta entender como lo has hecho. Si nos explicases un poco cual ha sido la estrategia para incluirlo y hacerlo funcionar, seguro que muchos te lo agradeceríamos
Re: empezando con easyPreview
Posted: Mon Aug 25, 2014 6:09 am
by mastintin
Realmente no he tenido que modificar demasiadas cosas , he renombrado la función de Tim Rpreview a ER_rpreview() ( nos sobra realmente ) , he enlazado los módulos necesarios y comentado las funciones que daban error para mas adelante revisarlas , ahora mismo sobra mucho código que se ha enlazado y alguno falla , he pasado dialogos no modales a modales de momento ( se ve que en el desarrollo inicial estaban en modal y quedaron a medias en el desarrollo de Tim ) .
Falta algo de trabajo y el programa aún rompe en ocasiones , pero amenos se puede usar .
Saludos a todos.
Re: empezando con easyPreview
Posted: Tue Aug 26, 2014 9:30 pm
by cnavarro
Si os habéis fijado, una vez lanzado el preview de un report, se puede volver a pulsar el boton "Imprimir" por lo que te crea otra ventana (por el tema de ser MdiChild) con otra previsualizacion del mismo reporte
Una vez lanzado la previsualizacion del report habria que desactivar el boton imprimir y preview