Hola:
Os dejo aquí un ejemplo de uso de Fast Report con Fivewin. Podéis ver la potencia del diseñador y del preview.
Lo podéis descargar en http://rapidshare.com/files/120288992/D ... t.zip.html
Incluyo un .exe totalmente funcional.
Fundamentalmente, el trabajo es obra de Ángel Canudas.
Un saludo,
Moisés
//
// (c) Angel Canudas Rey and Moisés
//
// Para compilar, hay que incluir el archivo fastreph.prg que viene en la versión demo
// de FastReport, así como FrSystH.dll
//
// Web de Fast Report for xHarbour: http://www.paritetsoft.ru/frh.htm
#include "FiveWin.ch"
STATIC oWndMain
// -----------------------------------------------------------------------
FUNCTION Main()
LOCAL oBar
SET EPOCH TO 1990 // Admite los a¤os desde el 1990 en adelante
SET CENTURY ON // 4 d¡gitos a¤o
SET DATE ITALIAN // formato dd-mm-yyyy
SET DELETED ON // Impedir ver registros marcados borrar
SetCancel( .F. ) // Inutiliza ALT + C para abortar programa
SetHandleCount( 200 ) // M ximo n§ ficheros abiertos
REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" ) // Por defecto, ficheros FoxPro
// VENTANA PRINCIPAL --------------------------------------------------
DEFINE WINDOW oWndMain FROM 00,00 TO 45,140 ;
TITLE "DEMO para Fast Report en Fivewin" ;
MDI
DEFINE BUTTONBAR oBar SIZE 60,55 _3DLOOK OF oWndMain
DEFINE BUTTON OF oBar RESOURCE "BARART" ACTION RptDocTemp() ;
TOOLTIP "Impresión Factura" ;
NOBORDER ;
GROUP
DEFINE BUTTON OF oBar RESOURCE "BARANTIVIR" ACTION InfEmpresas() ;
TOOLTIP "Listado Empresas" ;
NOBORDER ;
GROUP
DEFINE BUTTON OF oBar RESOURCE "BARPRO" ACTION DesignReport() ;
TOOLTIP "Diseñador Informes" ;
NOBORDER ;
GROUP
DEFINE BUTTON OF oBar RESOURCE "BAREXIT" ACTION oWndMain:End() ;
TOOLTIP "Salir del Programa" ;
NOBORDER ;
GROUP
ACTIVATE WINDOW oWndMain MAXIMIZED
RETURN NIL
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
FUNCTION DesignReport()
LOCAL oFr
oFr := frReportManager():New()
oFr:LoadLangRes( "spanish.xml" )
oFr:SetIcon( 1 )
oFr:SetTitle( "Diseñador de Informes" )
oFr:LoadFromFile( "FACTURA.FR3" )
oFr:DesignReport()
oFr:DestroyFr()
RETURN NIL
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------
FUNCTION RptDocTemp()
LOCAL oFr
// Esta es una manera de llamar al informe, directamente sin abrir las bases de datos
// Es el propio FastReport el que se encarga de abrirlas!!!
// En este caso no hace falta abrir antes los ficheros
// Los ficheros del DATA del report estan sin el PATH al estar todo en
// el mismo directorio, si siempre van ha estar en el mismo directorio,
// indicale el PATH.
// Si el PATH puede ser variable, entonces utiliza el sistema del InfEmpresas()
// Con AddVariable le paso el nombre del documento, así el formato lo puedo
// utilizar para presupuestos, pedidos, albaranes o facturas
oFr := frReportManager():New()
oFr:LoadLangRes( "spanish.xml" )
oFr:SetIcon( 1 )
oFr:SetTitle( "Imprimir Documento" )
oFr:LoadFromFile( "FACTURA.FR3" )
oFr:AddVariable( "TITOL", "cTitol", "'FACTURA'" )
oFr:ShowReport()
oFr:DestroyFr()
RETURN NIL
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
FUNCTION InfEmpresas()
LOCAL oFr
USE EMPRESES NEW
OrdListAdd( "EMPRESES" )
dbSetOrder( 1 )
dbGoTop()
USE OPERARIS NEW
OrdListAdd( "OPERARIS" )
dbSetOrder( 4 )
dbGoTop()
// Esta es la segunda manera de trabajar
//
// Aquí abro los ficheros, les indico el índice adecuado para relacionarlos
// Con el SetWorkArea le indico el alias utilizado en el diseñador y el nº de area actual,
// y con el SetMasterDetail relaciono los ficheros
// En el report veras que no hay DATA, en modo diseño si que los he utilizado
// pero luego los he borrado ya que los asigno por código
oFr := frReportManager():New()
oFr:LoadLangRes( "spanish.xml" )
oFr:SetWorkArea( "H1", 1 ) // Area 1
oFr:SetWorkArea( "H2", 2 ) // Area 2
oFr:SetMasterDetail( "H1", "H2", {|| Str( FIELD->Codi, 5 )} )
oFr:LoadFromFile( "EMPRESAS.FR3" )
oFr:ShowReport()
oFr:DestroyFr()
dbCloseAll()
RETURN NIL
// -----------------------------------------------------------------------