#include "FiveWin.ch"
#include "report.ch"
#include "constant.ch"
request DBFCDX
STATIC oReport
STATIC oLvw
//---------------------------------------------------------------------------//
// Test MiniPreview
// Falconi Silvio june 2014
//---------------------------------------------------------------------------//
Function Main()
USE TEST NEW VIA "DBFCDX"
REPORT oReport TITLE "*** My First Report ***" PREVIEW
COLUMN TITLE "St" DATA Test->State
COLUMN TITLE "First Name" DATA Test->First
COLUMN TITLE " Salary" DATA Test->Salary
END REPORT
oReport:CellView()
ACTIVATE REPORT oReport
CLOSE TEST
RETURN NIL
Function RPreview( oDevice, oReport)
Local oDlgMiniPrint,oFldMiniPrint
Local nBottom := 30
Local nRight := 60.2
Local nWidth := Max( nRight * DLG_CHARPIX_W, 180 )
Local nHeight := nBottom * DLG_CHARPIX_H
Local oBtnPreview
Local oBtnPrint
Local oBtnExit
Local oBtnEmail
Local oBtnPdf
Local oBtnHelp
Local oFont := TFont():New( GetDefaultFontName(), 0, GetDefaultFontHeight(),, )
Local oPanelPreview
Local oSay
DEFINE BRUSH oBrush COLOR CLR_HGRAY
DEFINE DIALOG oDlgMiniPrint ;
TITLE "Mini Print" ;
SIZE nWidth, nHeight PIXEL
@ 0,0.5 Say oSay Prompt oDevice:cDocument OF oDlgMiniPrint SIZE 230,15 COLOR CLR_HGRAY,CLR_WHITE
oPanelPreview:=TPanel():New(20, 0, 200, 160, oDlgMiniPrint)
oPanelPreview:SetBrush( oBrush )
@ 20,160 FOLDER oFldMiniPrint Prompt "Stand.","Pers." PIXEL;
SIZE 78, oPanelPreview:nbottom-110 OF oDlgMiniPrint
@ 110, 160 BUTTON oBtnPreview PROMPT "&Anteprima di Stampa" OF oDlgMiniPrint SIZE 77, 10;
PIXEL FONT oFont DEFAULT ACTION (Preview_Class(oDevice, oReport),oDlgMiniPrint:End())
@ 122, 160 BUTTON oBtnPreview PROMPT "&Uscita" OF oDlgMiniPrint SIZE 77, 10;
PIXEL FONT oFont DEFAULT ACTION (oDlgMiniPrint:End())
ACTIVATE DIALOG oDlgMiniPrint CENTERED ;
ON INIT PanelView(oDevice,oPanelPreview)
return nil
//--------------------------------------------------------------------//
Function Preview_Class(oDevice, oReport)
local oPreview := TPreview():New( oDevice, oReport )
oDevice:oPreview := oPreview
oPreview:Activate()
return nil
//--------------------------------------------------------------------//
Function PanelView(oDevice,oPanelPreview)
local nSizeH, nSizeV, oBmp, n, aPrompts := {}
local oImageListPages,nPage:=1
if oDevice:nHorzRes() > oDevice:nVertRes()
nSizeH = 250
nSizeV = 250
else
nSizeH = 230
nSizeV = 340
endif
oBmp = TBitmap():Define()
oImageListPages = TImageList():New( nSizeH, nSizeV )
for n := 1 to Len( oDevice:aMeta )
oBmp:hBitmap := PageBitmap( oDevice:aMeta[ n ], nSizeH, nSizeV )
oImageListPages:Add( oBmp )
Aadd( aPrompts, AllTrim( Str( n ) ) )
NEXT
oLvw := TListView():New( 5, 5, aPrompts,{ | nPage | Preview_Class_Page(oDevice, oReport,nPage) } , oPanelPreview, ,;
, .T., , oPanelPreview:nWidth-10,oPanelPreview:nBottom+155, "MiniPreview" )
oLvw:setcolor(,CLR_GRAY)
oLvw:SetImageList( oImageListPages )
return nil
//--------------------------------------------------------------------//
Function Preview_Class_Page(oDevice, oReport,nPage)
local oPreview := TPreview():New( oDevice, oReport )
oDevice:oPreview := oPreview
oPreview:GoPage( nPage )
oPreview:Activate()
return nil
//------------------------------------------------------------------------//
static function PageBitmap( cEMF, nWidth, nHeight )
local hDC1 := GetDC( GetDesktopWindow() )
local hDC2 := CreateCompatibleDC( hDC1 )
local hBmp := CreateCompatibleBitmap( hDC1, nWidth, nHeight )
local hOldBmp := SelectObject( hDC2, hBmp )
local hEMF := GetEnhMetaFile( cEmf )
Rectangle( hDC2, 0, 0, nHeight, nWidth )
XPlayEnhMetaFile( hDC2, hEMF, 0, 0, nHeight, nWidth )
CloseEnhMetafile( hEMF )
SelectObject( hDC2, hOldBmp )
DeleteDC( hDC2 )
ReleaseDC( hDC1 )
return hBmp
//--------------------------------------------------------------------//
only when I click on first oage not go to preview ( if i click on second page it go to page preview right)