generador interactivo de listados clase TREPORT

generador interactivo de listados clase TREPORT

Postby mgsoft » Thu Nov 19, 2009 2:40 pm

Hola:

Me gustaría saber si existe esto, ya sea free o de pago, un asistente para construir listados con la clase TReport, indicando campos, título de columnas, anchura, fuente, etc.

Muchas Gracias :D
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: generador interactivo de listados clase TREPORT

Postby FranciscoA » Fri Nov 20, 2009 2:36 am

Hola. Creo que existe algo desde hace bastante tiempo llamado MIDAS (no lo he usado aun)
Puede que te sirva.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: generador interactivo de listados clase TREPORT

Postby Silvio » Fri Nov 20, 2009 9:18 am

see adhoc application !!!!!!!!!!!!!
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: generador interactivo de listados clase TREPORT

Postby mgsoft » Fri Nov 20, 2009 2:22 pm

Silvio,

Runahdoc no sopora longitud de la columna, y su código fuente es un poco complicado de entender para mí y arreglarlo.
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: generador interactivo de listados clase TREPORT

Postby Silvio » Fri Nov 20, 2009 6:02 pm

sorry but it can be easy modified

If you want we can modified it together


I use it for an my application with success
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: generador interactivo de listados clase TREPORT

Postby Alfredo Arteaga » Fri Nov 20, 2009 7:51 pm

Puedes evaluar esto: http://www.despachoarteaga.com.mx/Visor.zip si te agrada, lo usas o haces alguna mejora te agradeceremos la compartas.
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Re: generador interactivo de listados clase TREPORT

Postby Patricio Avalos Aguirre » Fri Nov 20, 2009 10:04 pm

Hola

Si quieres algo de paga te recomiendo FASTREPORT, creo que es uno de los mejores Report para xharbour

http://www.paritetsoft.ru/frh.htm
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: generador interactivo de listados clase TREPORT

Postby mgsoft » Mon Nov 23, 2009 8:56 am

Hola:

Muchas gracias por las respuestas.

Alfredo, sí busco una cosa como la tuya pero con control de tamaños. Lo voy a modificar y posteo los cambios con tu permiso.

Patricio, muchas gracias pero lo que busco es Listados y no Informes.

:D
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: generador interactivo de listados clase TREPORT

Postby Alfredo Arteaga » Mon Nov 23, 2009 3:46 pm

Sin complicaciones, ya está el cambio para modificar el tamaño del dato a imprimir.

http://www.despachoarteaga.com.mx/Visor.zip
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Re: generador interactivo de listados clase TREPORT

Postby mgsoft » Mon Nov 23, 2009 5:39 pm

Alfredo:

Muchísimas gracias por tu amable ayuda ;).

Un saludo,

jesús
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: generador interactivo de listados clase TREPORT

Postby Manuel Valdenebro » Wed Nov 25, 2009 6:38 am

Alfredo Arteaga wrote:Puedes evaluar esto: http://www.despachoarteaga.com.mx/Visor.zip si te agrada, lo usas o haces alguna mejora te agradeceremos la compartas.


Alfredo, muy buena la aplicación.
¿Como consigues imprimir desde el previo en PDF?
Un saludo

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

Re: generador interactivo de listados clase TREPORT

Postby Alfredo Arteaga » Wed Nov 25, 2009 9:33 am

No hay secretos Manuel, uso Image2PDF.Dll que va incluida en el zip.

Estos son los cambios:

Code: Select all  Expand view

// --- Cambios a RPreview para trabajar con Image2PDF

// ---
     DEFINE BUTTON RESOURCE "Acrobat" OF oBar ;
          MESSAGE "Generar archivo tipo PDF"  ;
          ACTION  SavePDF( oDevice ) ;
          TOOLTIP "Generar archivo PDF"
// ---
               MENUITEM "Generar PDF" ACTION SavePDF(oDevice) ;
                    MESSAGE "Generar archivo tipo PDF" RESOURCE "Acrobat"


FUNCTION SavePDF(oDevice)
   LOCAL error, hLibImg2PDF
   LOCAL imageFilename:=" "
   LOCAL cPdfFilename
   LOCAL nI, iErr:=0
   LOCAL aFiles:={}, cTemp
   cPdfFileName:=cUTem+"\"+Left(cNSys,2)+"_Temp\"+oDevice:cDocument+".Pdf"
   IF !File("
Image2PDF.Dll")
      MsgAlert("
No existe DLL para generar PDFs.","Precaución!")
      RETURN (NIL)
   ENDIF
   aFiles:=oDevice:aMeta
   hLibImg2PDF:=LoadLib32("
Image2PDF.Dll")
   IF ValType(aFiles)=="
A"
      I2PDF_License("
LICENCIA")
      iErr:=IPMeta()              // Flag that his is a meta file
      iErr:=IPSize()              // Reset the size
      iErr:=IPMetaAdjustText()
      iErr:=IPSetDPI(0)           // Set DPI to the default for PDF's.  It works better
      FOR nI:=1 TO Len(aFiles)    // Build the pages using the array of temp files
         CursorWait()
         imageFilename:=aFiles[nI]
         iErr:=IPAddImg(imageFilename)
      NEXT nI
      CursorWait()
      iErr:=IPMakePDF(cPdfFileName,0,error,40)   // Create the PDF.
   ENDIF
   FreeLib32(hLibImg2PDF)
   CursorArrow()
   IF !File(cPdfFileName)
      MsgInfo("
No se generó el archivo PDF.","Información!")
   ELSE
      ShellExecute(,"
Open",cPdfFileName,"",".\",.T.)
   ENDIF
RETURN (NIL)

//--- Wrappers ---------------------------------------------------------------//

   DLL32 STATIC FUNCTION I2PDF_License( code AS LPSTR) AS LONG;
   PASCAL FROM "
I2PDF_License" LIB "IMAGE2PDF.dll"

   DLL32 STATIC FUNCTION IPMeta( ) AS LONG;
   PASCAL FROM "
I2PDF_MetaToNativePDF" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPMetaAdjustText() AS LONG;
   PASCAL FROM "
I2PDF_MetaTextFitBoundingRect" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPSize( ) AS LONG;
   PASCAL FROM "
I2PDF_UseEMFDeviceSize" LIB "Image2PDF.DLL"

   DLL32 STATIC FUNCTION IPAddImg( cImage AS LPSTR ) AS LONG;
   PASCAL FROM "
I2PDF_AddImage" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPSetDpi( nDpi AS LONG ) AS LONG;
   PASCAL FROM "
I2PDF_SetDPI" LIB "Image2PDF.dll"

   DLL32 STATIC FUNCTION IPMakePDF( cOutFile AS LPSTR, nOptions AS LONG, cErrTxt AS LPSTR, nMaxESize AS LONG ) AS LONG;
   PASCAL FROM "
I2PDF_MakePDF" LIB "Image2PDF.dll"

   DLL32  FUNCTION COPYFILE( cExistName AS LPSTR, cNewName AS LPSTR, nFailIfExist AS LONG ) AS BOOL;
   PASCAL FROM "
CopyFileA" LIB "kernel32.dll"

   DLL32 FUNCTION xI2PDF_BatesFormat( format AS LPSTR ) AS LONG;
   PASCAL FROM "
I2PDF_BatesFormat" LIB "Image2PDF.dll"

   DLL32 FUNCTION xI2PDF_BatesLocation( verticalPosition AS LONG, horizontalPosition AS LONG, orientation AS LONG, margin AS LONG) AS LONG;
   PASCAL FROM "
I2PDF_BatesLocation" LIB "Image2PDF.dll"

   DLL32 FUNCTION xI2PDF_BatesFont_Int( iSize AS LONG, FontID AS LPSTR, fillRed AS LONG, fillGreen AS LONG, fillBlue AS LONG, iStyle AS LONG, otherRed AS LONG, otherGreen AS LONG, otherBlue AS LONG) AS LONG;
   PASCAL FROM "
I2PDF_BatesFont_Int" LIB "Image2PDF.dll"

   DLL32 FUNCTION xI2PDF_BatesBackground_Int( shape AS LONG, bkRed AS LONG, bkGreen AS LONG, bkBlue AS LONG, borderRed AS LONG, borderGreen AS LONG, borderBlue AS LONG  ) AS LONG;
   PASCAL FROM "
I2PDF_BatesBackground_Int" LIB "Image2PDF.dll"

//----------------------------------------------------------------------------//

User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Re: generador interactivo de listados clase TREPORT

Postby Alfredo Arteaga » Wed Nov 25, 2009 9:43 am

Les dejo un último ajuste donde agregué un ComboBox para seleccionar la alineación de los datos (Right, Left, Center).

Code: Select all  Expand view
FUNCTION New_Report(oLbx)
   LOCAL oDlg,  oHdr, oData, oField, nI
   LOCAL nFld, nDat, nF, cAlias, oSiz
   LOCAL oCel, lCel, nOpt, cTit, oAlg
   LOCAL aAlg:={"Izq.","Cen.","Der."}
   aField:={}
   aData:={}
   aHead:={}
   aTypD:={}
   aSizD:={}
   aAlig:={}
   aType:={}
   aSizs:={}
   aPict:={}
   nDat:= 1
   nFld:= 1
   nOpt:= 1
   lCel:=.F.
   cTit:="Reporte de "+cTitl+Space(25)
   cAlias:=oLbx:cAlias()
   DbSelectArea(cAlias)
   nF:=(cAlias)->(FCount())
   ASize(aField,nF)
   ASize(aType,nF)
   ASize(aSizs,nF)
   ASize(aPict,nF)
   AFields(aField,aType,aSizs)
   FOR nI=1 TO nF
      IF nI<=3  // tres como mínimo
         AAdd(aData,aField[nI])
         AAdd(aHead,aField[nI])
         AAdd(aTypD,aType[nI])
         AAdd(aSizD,aSizs[nI])
         AAdd(aAlig,IF(aType[nI]="N","Der.","Izq."))
      ELSE
         nI:=nF
      ENDIF
   NEXT nI
   AFill(aPict,"")

   DEFINE DIALOG oDlg RESOURCE "SDS_VSR" FONT oWnd:oFont ;
        TITLE "Configuración del Reporte"
   REDEFINE BUTTON ID 101 OF oDlg ;       // Agregar
        ACTION ;
       (oData:Add(aField[nFld])        ,;
        AAdd(aHead,aField[nFld])       ,;
        AAdd(aTypD,aType[nFld])        ,;
        AAdd(aSizD,aSizs[nFld])        ,;
        AAdd(aAlig,IF(aType[nFld]="N","Der.","Izq.")) ,;
        nDat:=Len(aHead)               ,;
        oSiz:Refresh()                 ,;
        oAlg:Refresh()                 ,;
        oHdr:Refresh() )
   REDEFINE BUTTON ID 102 OF oDlg ;       // Borrar
        ACTION ;
        IF(Len(aHead)==1, MsgBeep()    ,;
       (oData:Del(nDat),               ,;
        ADel(aHead,nDat)               ,;
        ASize(aHead,Len(aHead)-1)      ,;
        ADel(aTypD,nDat)               ,;
        ASize(aTypD,Len(aTypD)-1)      ,;
        ADel(aSizD,nDat)               ,;
        ASize(aSizD,Len(aSizD)-1)      ,;
        ADel(aAlig,nDat)               ,;
        ASize(aAlig,Len(aAlig)-1)      ,;
        nDat:=Min(Len(aHead),nDat)     ,;
        oSiz:Refresh()                 ,;
        oAlg:Refresh()                 ,;
        oHdr:Refresh() ))
   REDEFINE BUTTON ID 103 OF oDlg ;       // Insertar
        ACTION ;
       (oData:Insert(aField[nFld],nDat),;
        AAdd(aHead,NIL)                ,;
        aIns(aHead,nDat)               ,;
        aHead[nDat]:=aField[nFld]      ,;
        AAdd(aTypD,NIL)                ,;
        aIns(aTypD,nDat)               ,;
        aTypD[nDat]:=aType[nFld]       ,;
        AAdd(aSizD,NIL)                ,;
        aIns(aSizD,nDat)               ,;
        aSizD[nDat]:=aSizs[nFld]       ,;
        AAdd(aAlig,NIL)                ,;
        aIns(aAlig,nDat)               ,;
        aAlig[nDat]:=IF(aType[nFld]="N","Der.","Izq.") ,;
        oSiz:Refresh()                 ,;
        oAlg:Refresh()                 ,;
        oHdr:Refresh() )
   REDEFINE LISTBOX oField VAR nFld ITEMS aField ID 104 OF oDlg
   REDEFINE LISTBOX oData  VAR nDat ITEMS aData  ID 105 OF oDlg ;
        ON CHANGE (oHdr:Refresh(),oSiz:Refresh(),oAlg:Refresh())
   REDEFINE GET oHdr VAR aHead[nDat] ID 106 OF oDlg MEMO               // Get head
   REDEFINE GET oSiz VAR aSizD[nDat] ID 107 OF oDlg PICTURE "9999"     // Get size
   REDEFINE COMBOBOX oAlg VAR aAlig[nDat] ITEMS aAlg ID 108 OF oDlg    // Get align
   REDEFINE CHECKBOX oCel VAR lCel   ID 111 OF oDlg
   REDEFINE RADIO nOpt ID 112,113,114,115   OF oDlg
   REDEFINE GET cTit ID 116 OF oDlg MEMO
   REDEFINE BUTTON ID 110 OF oDlg ACTION Gen_Report(cAlias,cTit,nOpt,lCel)
   REDEFINE BUTTON ID 120 OF oDlg ACTION oDlg:End()
   ACTIVATE DIALOG oDlg CENTERED
RETURN (NIL)

STAT FUNC Gen_Report(cAlias,cTit,nOpt,lCel)
   LOCAL oReport, oDevice, cFTxt, cHead, cData
   LOCAL cGroup, oFont, nI, nRecno, nFld
   DEFINE FONT oFont NAME cFont SIZE 0,-10
   DO CASE
      CASE nOpt==1                 // pantalla
         PRINT oDevice TITLE cTit PREVIEW
         REPORT oReport                    ;
            TITLE Trim(cTit)               ;
            FONT oFont                     ;
            HEADER "Fecha: "+DtoC(Date()) ,;
                   "Hora: " +Time() RIGHT  ;
            FOOTER "Hoja: " +              ;
                   Str(oReport:nPage,3)    ;
                   CENTERED                ;
            PREVIEW                        ;
            CAPTION cTit                   ;
            TO DEVICE oDevice
      CASE nOpt==2                 // Impresora
         PRINT oDevice TITLE cTit
         REPORT oReport                    ;
            TITLE Trim(cTit)               ;
            FONT oFont                     ;
            HEADER "Fecha: "+DtoC(Date()) ,;
                   "Hora: " +Time() RIGHT  ;
            FOOTER "Hoja: " +              ;
                   Str(oReport:nPage,3)    ;
                   CENTERED                ;
            CAPTION cTit                   ;
            TO DEVICE oDevice
      CASE nOpt==3                 // Archivo
         cFTxt:=cPatD+cAlias+".Txt"
         REPORT oReport                    ;
            TITLE Trim(cTit)               ;
            FONT oFont                     ;
            HEADER "Fecha: "+DtoC(Date()) ,;
                   "Hora: " +Time() RIGHT  ;
            FOOTER "Hoja: " +              ;
                  Str(oReport:nPage,3)     ;
                  CENTERED                 ;
            CAPTION cTit                   ;
            TO FILE (cFTxt)
      CASE nOpt==4                 // Excel
         Rpt_Excel(cAlias)
         RETURN (NIL)
   ENDCASE
      FOR nI:=1 TO Len(aData)
         RptAddColumn({Get_Head(aHead,nI)},, ;
                      {Get_Data(aData,nI)},  ;
                      aSizD[nI],             ;
                      {Trim(aPict[nI])},     ;
                      {|| 1},                ;
                      (aTypD[nI]=="N"),      ;
                      {|| .T. },             ;
                      IF(aAlig[nI]="Der.","RIGHT",IF(aAlig[nI]="Cen.","CENTER","LEFT")))
      NEXT
   ENDREPORT
   IF lCel
      oReport:CellView()
   ENDIF
   nRecno:=(cAlias)->(Recno())
   ACTIVATE REPORT oReport ON STARTGROUP oReport:NewLine() ;
                           ON INIT (cAlias)->(DbGotop())
   (cAlias)->(DbGoto(nRecno))
   IF nOpt=3
      ShellExecute(oWnd:hWnd,"Open",cFTxt,Nil,Nil,1)
   ENDIF
RETURN (NIL)
 
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Re: generador interactivo de listados clase TREPORT

Postby Manuel Valdenebro » Wed Nov 25, 2009 12:19 pm

Alfredo Arteaga wrote:No hay secretos Manuel, uso Image2PDF.Dll que va incluida en el zip.



Muchas gracias Alfredo. Funcionó perfectamente, aunque, logicamente, como versión de evaluación.
Un saludo

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

Re: generador interactivo de listados clase TREPORT

Postby Alfredo Arteaga » Sat Nov 28, 2009 6:14 am

Aqui de nuevo!

A solicitud de un buen amigo (JCSO) he separado el paso que tengo en uso para el diseño de documentos.

Y por qué no ponerlo a disposición de todos? http://www.despachoarteaga.com.mx/Visor.zip

Recuerdo ya haber puesto algo similar hace un par de años con motivo de mi primer mitad de siglo (8 de diciembre), todavía no se cumple la fecha pero les adelanto el obsequio.

Ah!, según las estadísticas ya se superan las 200 descargas, seguro se van a duplicar. Solo espero que este pedazo de código sea útil a más de uno.

Saludos.
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 27 guests