FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Wrapper
Posts: 811
Joined: Tue May 06, 2008 04:28 AM
Wrapper
Posted: Thu Mar 11, 2010 08:25 AM
Dear All,


This maybe a little off-topic but I ran out of source.

Anybody with Crystal Reports (8.5) wrapper mainly with PE* functions?

I tried to reconstruct 'PELogOnServer' but my reports failed to logon with ADS (Local)...

Here is the entire wrapper .prg

I hope anyone can help.


Best Regards,
FAP


Code (fw): Select all Collapse
#Include "WinApi.Ch"
#Include "cstruct.ch"


C STRUCTURE PEWINDOWOPTIONS

  Member StructSize            IS CTYPE_UNSIGNED_SHORT
  Member hasGroupTree          IS CTYPE_SHORT
  Member canDrillDown          IS CTYPE_SHORT
  Member hasNavigationControls IS CTYPE_SHORT
  Member hasCancelButton       IS CTYPE_SHORT
  Member hasPrintButton        IS CTYPE_SHORT
  Member hasExportButton       IS CTYPE_SHORT
  Member hasZoomControl        IS CTYPE_SHORT
  Member hasCloseButton        IS CTYPE_SHORT
  Member hasProgressControls   IS CTYPE_SHORT
  Member hasSearchButton       IS CTYPE_SHORT
  Member hasPrintSetupButton   IS CTYPE_SHORT
  Member hasRefreshButton      IS CTYPE_SHORT
  Member showToolbarTips       IS CTYPE_SHORT
  Member showDocumentTips      IS CTYPE_SHORT
  Member hasLaunchButton       IS CTYPE_SHORT

END C STRUCTURE



C STRUCTURE UXFXLSOPTIONS Align 1

  Member StructSize        IS CTYPE_UNSIGNED_SHORT
  Member bColumnHeadings   IS CTYPE_SHORT
  Member bUseConstColWidth IS CTYPE_SHORT
  Member fConstColWidth    IS CTYPE_DOUBLE
  Member bTabularFormat    IS CTYPE_SHORT
  Member baseAreaType      IS CTYPE_UNSIGNED_SHORT
  Member baseAreaGroupNum  IS CTYPE_UNSIGNED_SHORT
  Member bUseWorksheetFunc IS CTYPE_SHORT

END C STRUCTURE


C STRUCTURE UXDDISKOPTIONS Align 2

  Member StructSize IS CTYPE_UNSIGNED_SHORT
  Member fileName   IS CTYPE_CHAR_PTR

END C STRUCTURE


C STRUCTURE PEEXPORTWOPTIONS

  Member StructSize               IS CTYPE_UNSIGNED_SHORT
  Member formatDLLName            IS CTYPE_CHAR_PTR
  Member formatType               IS CTYPE_UNSIGNED_LONG
  Member formatOptions            AS UXFXLSOPTIONS
  Member destinationDLLName       IS CTYPE_CHAR_PTR
  Member destinationType          IS CTYPE_UNSIGNED_LONG
  Member destinationOptions       AS UXDDISKOPTIONS
  Member nFormatOptionsBytes      IS CTYPE_UNSIGNED_SHORT
  Member nDestinationOptionsBytes IS CTYPE_UNSIGNED_SHORT

END C STRUCTURE


C STRUCTURE PETABLELOCATION

  Member StructSize    IS CTYPE_UNSIGNED_SHORT
  Member Location      IS CTYPE_CHAR_PTR
  Member SubLocation   IS CTYPE_CHAR_PTR
  Member ConnectBuffer IS CTYPE_CHAR_PTR

END C STRUCTURE

C STRUCTURE PELOGONINFO

  Member StructSize    IS CTYPE_UNSIGNED_SHORT
  Member ServerName    IS CTYPE_CHAR_PTR
  Member DatabaseName  IS CTYPE_CHAR_PTR
  Member UserID        IS CTYPE_CHAR_PTR
  Member Password      IS CTYPE_CHAR_PTR

END C STRUCTURE


Function uPeWindowOptions()
 Local  obj

 obj IS PEWINDOWOPTIONS
 WITH OBJECT obj
      :StructSize            := -1
      :hasGroupTree          := 1
      :canDrillDown          := 0
      :hasNavigationControls := 1
      :hasCancelButton       := 1
      :hasPrintButton        := 1
      :hasExportButton       := 0
      :hasZoomControl        := 1
      :hasCloseButton        := 0
      :hasProgressControls   := 0
      :hasSearchButton       := 1
      :hasPrintSetupButton   := 1
      :hasRefreshButton      := 1
      :showToolbarTips       := 1
      :showDocumentTips      := 0
      :hasLaunchButton       := 0
 END WITH

Return( obj )


Function uPeTableLocation()
 Local obj

 obj IS PETABLELOCATION
 WITH OBJECT obj
      :StructSize    := -1
      :Location      := ""
      :SubLocation   := ""
      :ConnectBuffer := ""
 END WITH

Return( obj )

Function uPeLogonInfo()
 Local obj

 obj IS PELOGONINFO
 WITH OBJECT obj
      :StructSize    := -1
      :ServerName    := ""
      :DatabaseName  := ""
      :UserID        := ""
      :Password      := ""
 END WITH

Return( obj )




#PRAGMA BEGINDUMP

   #include "hbapi.h"
   #include "windows.h"
        #include "cstruct.ch"

        typedef struct PEWindowOptions
          {
            WORD StructSize;
            short hasGroupTree;
            short canDrillDown;
            short hasNavigationControls;
            short hasCancelButton;
            short hasPrintButton;
            short hasExportButton;
            short hasZoomControl;
            short hasCloseButton;
            short hasProgressControls;
            short hasSearchButton;
            short hasPrintSetupButton;
            short hasRefreshButton;
            short showToolbarTips;
            short showDocumentTips;
            short hasLaunchButton;
          } PEWindowOptions;


   typedef struct UXDDISKOPTIONS
     {
            WORD StructSize;
            char fileName[256];
          } UXDDISKOPTIONS;


   typedef struct UXFXLSOPTIONS
          {
           WORD StructSize;
           short bColumnHeadings;
           short bUseConstColWidth;
           double fConstColWidth;
           short bTabularFormat;
           WORD baseAreaType;
           WORD baseAreaGroupNum;
           short bUseWorksheetFunc;
          } UXFXLSOPTIONS;


        typedef struct PEExportOptions
     {
            WORD StructSize;
       LPCSTR formatDLLName;
            WORD formatType;
            struct UXFXLSOPTIONS formatOptions; //void FAR *formatOptions;
            LPCSTR destinationDLLName;
            WORD destinationType;
            void FAR *destinationOptions;
            WORD nFormatOptionsBytes;
            WORD nDestinationOptionsBytes;
          } PEExportOptions;


        typedef struct PETableLocation
          {
            WORD StructSize;
            char Location[256];
            char SubLocation[256];
            char ConnectBuffer[512];
     } PETableLocation;

        typedef struct PELogOnInfo
         {
           WORD StructSize;
           char ServerName [128];
           char DatabaseName [128];
           char UserID [128];
           char Password [128];
         } PELogOnInfo;



        BOOL WINAPI PEOpenEngine(void) ;
        INT  WINAPI PEOpenPrintJob( char* );
        BOOL WINAPI PEClosePrintJob( int );
        INT  WINAPI PECloseEngine( void );
        BOOL WINAPI PEStartPrintJob( int, BOOL);
        BOOL WINAPI PEPrintWindow( int, BOOL);
        INT  WINAPI PEGetErrorCode( int );
        BOOL WINAPI PEIsPrintJobFinished( int );
        BOOL WINAPI PESetFormula( int, char*, char* );
        BOOL WINAPI PECheckFormula( int, char* );
        INT  WINAPI PEGetJobStatus( int, char* );
        INT  WINAPI PEGetWindowHandle( int );
        INT  WINAPI PEGetNTables( int );
        BOOL WINAPI PEGetNthTableLocation( int, int, PETableLocation FAR *options );
        //BOOL WINAPI PESetNthTableLocation( int, int, PETableLocation FAR *options );
        //BOOL WINAPI PEGetNthTableLocation( int, int, char* );
        BOOL WINAPI PESetNthTableLocation( int, int, char* );
        BOOL WINAPI PEGetSelectionFormula( int, int, int );
        BOOL WINAPI PESetSelectionFormula( int, char* );
        BOOL WINAPI PECheckSelectionFormula( int );
        BOOL WINAPI PEOutputToWindow( int, char*, int, int, int, int, long, HDC) ;
        BOOL WINAPI PEOutputToPrinter( int, int ) ;
        BOOL WINAPI PEShowPrintControls( int, BOOL) ;
        BOOL WINAPI PEExportPrintWindow(int, BOOL, BOOL);

        BOOL WINAPI PEExportTo( int, PEExportOptions FAR *options );
        BOOL WINAPI PEGetExportOptions(   int, PEExportOptions FAR *options );

        BOOL WINAPI PENextPrintWindowMagnification( int );
        BOOL WINAPI PEShowFirstPage( int );
        BOOL WINAPI PEShowPreviousPage( int );
        BOOL WINAPI PEShowLastPage( int );
        BOOL WINAPI PEShowNextPage( int );
        //INT  WINAPI PEGetNPages( int );

   // 8.5 only
        BOOL WINAPI PESelectPrinter( int, char*, char*, char*, char* );
        BOOL WINAPI PESetWindowOptions( int, PEWindowOptions FAR *options  );
        BOOL WINAPI PEGetWindowOptions( int, PEWindowOptions FAR *options  );
        BOOL WINAPI PEEnableProgressDialog(int, BOOL);
        BOOL WINAPI PEFreeDevMode(int, char*);
        BOOL WINAPI PESetDialogParentWindow( int,  HDC );
        BOOL WINAPI PEZoomPreviewWindow( int, int );
        BOOL WINAPI PEVerifyDatabase( int );
        BOOL WINAPI PESetRefreshData( int, BOOL);
        BOOL WINAPI PELogOnServer( const char FAR *dllName, PELogOnInfo FAR *logOnInfo );

   HB_FUNC( PELOGONSERVER )
        {
           PELogOnInfo *oPELogOnInfo = (PELogOnInfo *) hb_param( 2, HB_IT_STRING)->item.asString.value;

           oPELogOnInfo->StructSize = sizeof(PELogOnInfo);

           hb_retl( PELogOnServer( hb_parc(1), oPELogOnInfo) );
        }

   HB_FUNC( PEZOOMPREVIEWWINDOW )
        {

            hb_retl( PEZoomPreviewWindow( hb_parni(1), hb_parni(2) ) );
        }


        HB_FUNC( PESETDIALOGPARENTWINDOW)
        {
           hb_retl( PESetDialogParentWindow( hb_parni(1), (HDC) hb_parnl(2) ) ) ;
        }

   // 8.5 only
   HB_FUNC( PESETWINDOWOPTIONS )
        {

           PEWindowOptions *oPeWindowOptions = (PEWindowOptions *) hb_param( 2, HB_IT_STRING)->item.asString.value;

      oPeWindowOptions->StructSize = sizeof(PEWindowOptions);

           hb_retl( PESetWindowOptions( hb_parni(1), oPeWindowOptions ) );
        }



   HB_FUNC( PEGETWINDOWOPTIONS )
        {

           PEWindowOptions *oPeWindowOptions = (PEWindowOptions *) hb_param( 2, HB_IT_STRING )->item.asString.value;

      oPeWindowOptions->StructSize = sizeof(PEWindowOptions);

           hb_retl( PEGetWindowOptions( hb_parni(1), oPeWindowOptions ) );

        }

   HB_FUNC( PEENABLEPROGRESSDIALOG )
        {
         hb_retl( PEEnableProgressDialog( hb_parni(1), hb_parl(2) ) );
        }


   HB_FUNC( PEFREEDEVMODE )
        {
      hb_retl(PEFreeDevMode( hb_parni(1), hb_parc(2) ));
        }



        HB_FUNC( PEOPENENGINE )
        {
            hb_retl(PEOpenEngine());
        }

        HB_FUNC( PEOPENPRINTJOB )
        {
           hb_retni( PEOpenPrintJob( hb_parc(1) ) );
        }

        HB_FUNC( PECLOSEPRINTJOB )
        {
           hb_retl( PEClosePrintJob( hb_parni(1) ));
        }

        HB_FUNC( PECLOSEENGINE )
        {
           hb_retni( PECloseEngine());
        }

        HB_FUNC( PESTARTPRINTJOB )
        {
      hb_retl( PEStartPrintJob( hb_parni(1), hb_parl(2) ) );
        }

        HB_FUNC( PEPRINTWINDOW )
        {
           hb_retl( PEPrintWindow( hb_parni(1), hb_parl(2) ) );
        }

        HB_FUNC( PEGETERRORCODE )
        {
           hb_retni( PEGetErrorCode( hb_parni(1) ) );
        }

        HB_FUNC( PEISPRINTJOBFINISHED )
        {
           hb_retl( PEIsPrintJobFinished( hb_parni(1) ) );
        }

        HB_FUNC( PESETFORMULA )
        {
           hb_retl( PESetFormula( hb_parni(1), hb_parc(2), hb_parc(3) ) );
        }

        HB_FUNC( PECHECKFORMULA )
        {
           hb_retl( PECheckFormula( hb_parni(1), hb_parc(2) ) );
        }

        HB_FUNC( PEGETJOBSTATUS )
        {
           hb_retni( PEGetJobStatus( hb_parni(1), hb_parc(2) ) );
        }

        HB_FUNC( PEGETWINDOWHANDLE )
        {
           hb_retni( PEGetWindowHandle( hb_parni(1) ) );
        }

        HB_FUNC( PEGETNTABLES )
        {
           hb_retni( PEGetNTables( hb_parni(1) ) );
        }

/*
   HB_FUNC( PEGETNTHTABLELOCATION )
        {
           hb_retl( PEGetNthTableLocation( hb_parni(1), hb_parni(2), hb_parc(3) ) );
        }
*/

   HB_FUNC( PESETNTHTABLELOCATION )
        {
           hb_retl( PESetNthTableLocation( hb_parni(1), hb_parni(2), hb_parc(3) ) );
        }

        HB_FUNC( PEGETNTHTABLELOCATION )
        {
           PETableLocation *oPeTableLocation = (PETableLocation *) hb_param( 3, HB_IT_STRING )->item.asString.value;

      oPeTableLocation->StructSize = sizeof(PETableLocation);

      hb_retl( PEGetNthTableLocation( hb_parni(1), hb_parni(2), oPeTableLocation ) );
        }

/*
        HB_FUNC( PESETNTHTABLELOCATION )
        {
           PETableLocation *oPeTableLocation = (PETableLocation *) hb_param( 3, HB_IT_STRING )->item.asString.value;

      oPeTableLocation->StructSize = sizeof(PETableLocation);

      hb_retl( PESetNthTableLocation( hb_parni(1), hb_parni(2), oPeTableLocation ) );
        }

*/
        HB_FUNC( PEGETSELECTIONFORMULA )
        {
           hb_retl( PEGetSelectionFormula( hb_parni(1), hb_parni(2), hb_parni(3) ) );
        }

        HB_FUNC( PESETSELECTIONFORMULA )
        {
           hb_retl( PESetSelectionFormula( hb_parni(1), hb_parc(2) ) );
        }

        HB_FUNC( PECHECKSELECTIONFORMULA )
        {
           hb_retl( PECheckSelectionFormula( hb_parni(1) ) );
        }

        HB_FUNC( PEOUTPUTTOWINDOW )
        {
           hb_retl( PEOutputToWindow( hb_parni(1), hb_parc(2),
                                      hb_parni(3), hb_parni(4), hb_parni(5), hb_parni(6),
                                      hb_parnl(7), (HDC) hb_parnl(8) ) ) ;
        }

        HB_FUNC( PEOUTPUTTOPRINTER )
        {
           hb_retl( PEOutputToPrinter( hb_parni(1), hb_parni(2) ) );
        }

        HB_FUNC( PESHOWPRINTCONTROLS )
        {
           hb_retl(PEShowPrintControls( hb_parni(1), hb_parl(2) ));
        }

        HB_FUNC( PEEXPORTPRINTWINDOW )
        {
           hb_retl(PEExportPrintWindow( hb_parni(1), hb_parl(2), hb_parl(3) ));
        }

   HB_FUNC( PEEXPORTTO )
        {

      PEExportOptions *oPeExportoptions = (PEExportOptions *) hb_param( 2, HB_IT_STRING )->item.asString.value;

         oPeExportoptions->StructSize = sizeof(PEExportOptions);

      hb_retl(PEExportTo( hb_parni(1), oPeExportoptions ));
        }


   HB_FUNC( PEGETEXPORTOPTIONS )
        {

      PEExportOptions *oPeExportoptions = (PEExportOptions *) hb_param( 2, HB_IT_STRING )->item.asString.value;


      oPeExportoptions->StructSize = sizeof(PEExportOptions);

      hb_retl(PEGetExportOptions( hb_parni(1), oPeExportoptions ));
        }

        HB_FUNC( PENEXTPRINTWINDOWMAGNIFICATION )
     {
      hb_retl(PENextPrintWindowMagnification( hb_parni(1) ) );
     }

        HB_FUNC( PESHOWFIRSTPAGE )
     {
      hb_retl(PEShowFirstPage( hb_parni(1) ) );
     }

   HB_FUNC( PESHOWPREVIOUSPAGE )
     {
      hb_retl(PEShowPreviousPage( hb_parni(1) ) );
     }

   HB_FUNC( PESHOWLASTPAGE )
     {
      hb_retl(PEShowLastPage( hb_parni(1) ) );
     }

   HB_FUNC( PESHOWNEXTPAGE )
     {
      hb_retl(PEShowNextPage( hb_parni(1) ) );
     }


   HB_FUNC( PESELECTPRINTER )
     {
           hb_retl(PESelectPrinter( hb_parni(1), hb_parc(2), hb_parc(3), hb_parc(4), hb_parc(5) ));
     }

   HB_FUNC( PEVERIFYDATABASE )
        {
           hb_retl( PEVerifyDatabase( hb_parni(1) ));
        }

   HB_FUNC( PESETREFRESHDATA )
        {
           hb_retl( PESetRefreshData( hb_parni(1), hb_parl(2) ));
        }

#PRAGMA ENDDUMP
Kind Regards,

Frances



Fivewin for xHarbour v18.07

xHarbour v1.2.3.x

BCC 7.3 + PellesC8 ( Resource Compiler only)

ADS 10.1 / MariaDB

Crystal Reports 8.5/9.23 DE

xMate v1.15
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Wrapper
Posted: Mon Jan 26, 2015 09:59 AM

Hello Frances

do you have an example of this wrapper ?

Regards Maurizio

www.nipeservice.com

Posts: 811
Joined: Tue May 06, 2008 04:28 AM
Re: Wrapper
Posted: Sat Jan 31, 2015 07:22 AM
Hi Maurizio,

Sorry for the late reply.

I now use ActiveX which shares runtime with other CR apps I made on the same machine.

Here's my working sample from a working program (big) so I ripped some code:

Code (fw): Select all Collapse
...
      If peOpenEngine()

          oPeWindowOptions := uPeWindowOptions()
       
          oPeWindowOptions:hasExportButton       := 1
          oPeWindowOptions:hasNavigationControls := 1
          oPeWindowOptions:hasCancelButton       := 0
          oPeWindowOptions:hasSearchButton       := 0
          oPeWindowOptions:hasProgressControls   := 0

       Else

      MsgStop("Print/Preview Failed To Start!")
      BREAK

       End
...

       hJob := peOpenPrintJob( "c:\yourreport.rpt")

...

          If peStartPrintJob(hJob, .T.)

             If !PeOutPutToWindow(hJob, "", oWnd:nLeft-7, oWnd:nTop+20, oWnd:nWidth()-8, oWnd:nHeight()-40, nOr(WS_THICKFRAME), oWnd:hWnd )
                 
             MsgAlert( "Unable Output-To-Window Preview!" )
            BREAK

        End



          Else

         MsgInfo("Error: peStartPrintJob() : "+Str(PeGetErrorCode()))

          End
...
        peClosePrintJob( hJob )
        peCloseEngine()
...
Kind Regards,

Frances



Fivewin for xHarbour v18.07

xHarbour v1.2.3.x

BCC 7.3 + PellesC8 ( Resource Compiler only)

ADS 10.1 / MariaDB

Crystal Reports 8.5/9.23 DE

xMate v1.15
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Wrapper
Posted: Sat Jan 31, 2015 04:11 PM

Thanks Frances ,

I use Crystal Report 8.5 and I have a problem with the function PeExportTo() and printing in PDF.

With ActiveX is it possible to print directly to PDF ?

Regards Maurizio

www.nipeservice.com

Posts: 811
Joined: Tue May 06, 2008 04:28 AM
Re: Wrapper
Posted: Mon Feb 02, 2015 12:31 AM

Hi Maurizo,

I haven't use "PeExportTo" API of CR 8.5, perhaps if you skip the windows preview you may succeed.
In ActiveX yes you can directly print to PDF.

Kind Regards,

Frances



Fivewin for xHarbour v18.07

xHarbour v1.2.3.x

BCC 7.3 + PellesC8 ( Resource Compiler only)

ADS 10.1 / MariaDB

Crystal Reports 8.5/9.23 DE

xMate v1.15
Posts: 811
Joined: Tue May 06, 2008 04:28 AM
Re: Wrapper
Posted: Mon Feb 02, 2015 01:16 AM
Maurizo,

Please fallow this pattern in exporting from CRW directly to disk in pdf format using ActiveX

Code (fw): Select all Collapse
...
oApplication := CreateObject("CrystalRuntime.Application.9")
...
oReport := oApplication:OpenReport( "c:\report.rpt")
...
oReport:ExportOptions:DestinationType( 1 )                              //to disk
oReport:ExportOptions:FormatType( 31 )                                  //to pdf
oReport:ExportOptions:DiskFileName( "c:\report.pdf" )
...
oReport:Export( .F. )                                                               //.F. means do not prompt user 
...



I hope this is usefull for all.
Thanks.
Kind Regards,

Frances



Fivewin for xHarbour v18.07

xHarbour v1.2.3.x

BCC 7.3 + PellesC8 ( Resource Compiler only)

ADS 10.1 / MariaDB

Crystal Reports 8.5/9.23 DE

xMate v1.15
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Wrapper
Posted: Tue Feb 03, 2015 09:30 AM

Thanks Frances ,

it works :D , now i change all in Activex.

if you want some examples for SQL send me your email at info nipeservice com

Thanks Maurizio

www.nipeservice.com

Posts: 811
Joined: Tue May 06, 2008 04:28 AM
Re: Wrapper
Posted: Wed Feb 04, 2015 03:28 AM

Thank you Maurizo!

I will contact you privately or here if I need help..

Kind regards.

Kind Regards,

Frances



Fivewin for xHarbour v18.07

xHarbour v1.2.3.x

BCC 7.3 + PellesC8 ( Resource Compiler only)

ADS 10.1 / MariaDB

Crystal Reports 8.5/9.23 DE

xMate v1.15

Continue the discussion