-
Posts
511 -
Joined
-
Last visited
-
Days Won
3
Posts posted by syspel
-
-
obrigado
vou tester e depois te informo
ailton
-
bom dia
pessoal
comprei a classe do gilmer vonfe etc e nunca usei alguem tem exemplo como usar
o gilmer perdeu os exemplos de como usar a sua classe
obrigado
ailton syspel
-
obrigado pela a ideia
,mais tem 1 pedido digitado como eu faco para usar a classe do gilmer
onde eu coloco o numero do pedido nome do clientes,produto etc ?
suporte@syspel.com.br
carlos
fwh14.04 xhar 123 dbf xdev
-
obrigado pela a ideia
,mais tem 1 pedido digitado como eu faco para usar a classe do gilmer
onde eu coloco o numero do pedido nome do clientes,produto etc ?
suporte@syspel.com.br
carlos
fwh14.04 xhar 123 dbf xdev
-
bom dia
pessoal
comprei a classe do gilmer vonfe etc e nunca usei alguem tem exemplo como usar
o gilmer perdeu os exemplos de como usar a sua classe
obrigado
ailton syspel
-
o dono da syspel e o gilberto,eu so o ultimo que fala e o primeiro que apanha
mais consegui fazer um exerto eu acho que ficou bom, so falta para o excell fazer fiquei sem saco
vou anexar a dll e o rpreview foi uma semana de tampo, para mim ja esta bom
obrigado a todos
vou color se eu consequi anexar
-
nao tem anexar a imagem da erro neste tocho ?
obrigado
-
Alguém consegue corrigir a impressão na tela desse RPREVIEW, ele mostra distorcido na tela, mas imprime corretamente.
#include "FiveWin.ch"
#include "mail.ch"#ifdef __XHARBOUR__
#xtranslate HB_CurDrive() => CurDrive()
#xtranslate HB_TTOS( <t> ) => TTOS( <t> )
#xtranslate HB_DateTime() => DateTime()
#endif#define DEVICE oWnd:cargo
#define GO_POS 0
#define GO_UP 1
#define GO_DOWN 2
#define GO_LEFT 1
#define GO_RIGHT 2
#define GO_PAGE .T.#define VSCROLL_RANGE 20 * ::nZFactor
#define HSCROLL_RANGE 20 * ::nZFactor#define TXT_FIRST LoadString( GetResources(), 07 )
#define TXT_PREVIOUS LoadString( GetResources(), 08 )
#define TXT_NEXT LoadString( GetResources(), 09 )
#define TXT_LAST LoadString( GetResources(), 10 )
#define TXT_ZOOM LoadString( GetResources(), 11 )
#define TXT_UNZOOM LoadString( GetResources(), 12 )
#define TXT_TWOPAGES LoadString( GetResources(), 13 )
#define TXT_ONEPAGE LoadString( GetResources(), 14 )
#define TXT_PRINT LoadString( GetResources(), 15 )
#define TXT_EXIT LoadString( GetResources(), 16 )
#define TXT_FILE LoadString( GetResources(), 17 )
#define TXT_PAGE LoadString( GetResources(), 18 )
#define TXT_PREVIEW LoadString( GetResources(), 03 )
#define TXT_PAGENUM LoadString( GetResources(), 19 )#define TXT_A_WINDOW_PREVIEW_IS_ALLREADY_RUNNING ;
LoadString( GetResources(), 20 )
#define TXT_GOTO_FIRST_PAGE ;
LoadString( GetResources(), 21 )
#define TXT_GOTO_PREVIOUS_PAGE ;
LoadString( GetResources(), 22 )
#define TXT_GOTO_NEXT_PAGE ;
LoadString( GetResources(), 23 )
#define TXT_GOTO_LAST_PAGE ;
LoadString( GetResources(), 24 )
#define TXT_ZOOM_THE_PREVIEW ;
LoadString( GetResources(), 25 )
#define TXT_UNZOOM_THE_PREVIEW ;
LoadString( GetResources(), 26 )
#define TXT_PREVIEW_ON_TWO_PAGES ;
LoadString( GetResources(), 27 )
#define TXT_PREVIEW_ON_ONE_PAGE ;
LoadString( GetResources(), 28 )
#define TXT_PRINT_CURRENT_PAGE ;
LoadString( GetResources(), 29 )
#define TXT_EXIT_PREVIEW ;
LoadString( GetResources(), 30 )
#define TXT_FACTOR ;
LoadString( GetResources(), 31 )
#define TXT_ZOOM_FACTOR ;
LoadString( GetResources(), 32 )#define TXT_EXPORT_MSWORD ;
LoadString( GetResources(), 33 )#define MK_MBUTTON 16
static bUserBtns, lRebar, nBtnW, nBtnH, nStyle
static lWord, lCalc//----------------------------------------------------------------------------//
CLASS TPreview
DATA oWnd, oBar, oFont, oImageList
DATA oDevice, oReport
DATA oHand, oCursor
DATA oMeta1, oMeta2, oSay, oFactor
DATA oPage, oTwoPages, oZoom
DATA oMenuZoom, oMenuTwoPages, oMenuUnZoom, oMenuOnePage
DATA cResFile
DATA aFactor, nPage, nZFactor
DATA lTwoPages, lZoom, lExit
DATA cPageNumDATA hOldRes, hNewRes
DATA oLvw, oImageListPagesCLASSDATA cResFile
CLASSDATA oWndMain
CLASSDATA bPrint, bExportToWord, bSaveAsWord, bSaveAsPDF, bEmailCLASSDATA lListViewHide INIT .F.
METHOD New( oDevice, oReport )
METHOD Activate()
METHOD BuildButtonBar()
METHOD BuildListView() // mini pages viewer
METHOD BuildWindow()
METHOD BuildMenu()
METHOD GoPage( nPage )
METHOD PaintMeta()
METHOD PrintersMenu()
METHOD NextPage()
METHOD PrevPage()
METHOD TopPage()
METHOD BottomPage()
METHOD TwoPages( lMenu )
METHOD Zoom( lMenu )
METHOD VScroll( nType, lPage, nSteps )
METHOD HScroll( nType, lPage, nSteps )
METHOD SetOrg1( nX, nY )
METHOD SetOrg2( nX, nY )
METHOD CheckKey( nKey, nFlags )
METHOD CheckMouseWheel( nKeys, nDelta, nXPos, nYPos )
METHOD SelPrinter( cPrinter )
METHOD SetFactor( nValue )
METHOD PrintPage()
METHOD PrintPrv( oDlg, nOption, nPageIni, nPageEnd )ACCESS CanExportToWord INLINE ::bExportToWord != nil .or. lWord != .f. .or. lCalc != .f.
ACCESS CanExportToExcel INLINE ( ::oReport != nil .and. ;
( ::oReport:bInit != nil .or. ::oReport:bToExcel != nil ) )
METHOD ExportToMSWord()
METHOD ExportToMSExcel() INLINE If( ::CanExportToExcel, ::oReport:ToExcel(), ;
MsgInfo( FWString( "Export to Excel is available only" ) + ;
CRLF + ;
FWString( "for Reports with ::bInit defined" ), FWString( "Information" ) ) )METHOD SaveAsMenu()
METHOD SaveAs( lPDF )
METHOD SendEmail()METHOD CheckStyle() PROTECTED
METHOD ResizeListView()ENDCLASS
//----------------------------------------------------------------------------//
METHOD New( oDevice, oReport ) CLASS TPreview
if oDevice == nil
PRINTER oDevice PREVIEW
PAGE
ENDPAGE
// MsgInfo( oDevice:aMeta[ 1 ] )
// ENDPRINTER
endif::oDevice := oDevice
::oReport := oReport
::nPage := 1
::nZFactor := 1
::lTwoPages := .F.
::lZoom := .F.
::lExit := .F.::BuildWindow()
return Self
//----------------------------------------------------------------------------//
METHOD Activate() CLASS TPreview
local hWndMain
if ::oWnd == nil
return nil
endifACTIVATE WINDOW ::oWnd MAXIMIZED ;
ON RESIZE ( ::PaintMeta(), ::ResizeListView() ) ;
ON UP ::VScroll( GO_UP ) ;
ON DOWN ::VScroll( GO_DOWN ) ;
ON PAGEUP ::VScroll( GO_UP, GO_PAGE) ;
ON PAGEDOWN ::VScroll( GO_DOWN, GO_PAGE) ;
ON LEFT ::HScroll( GO_LEFT ) ;
ON RIGHT ::HScroll( GO_RIGHT ) ;
ON PAGELEFT ::HScroll( GO_LEFT, GO_PAGE ) ;
ON PAGERIGHT ::HScroll( GO_RIGHT, GO_PAGE ) ;
VALID ( ::oWnd:oIcon := nil ,;
::oFont:End() ,;
::oMeta1:End() ,;
::oMeta2:End() ,;
::oDevice:End() ,;
::oHand:End() ,;
If( Empty( ::oImageList ),, ( ::oImageList:End(), ::oImageList := nil ) ),;
If( ! Empty( ::oImageListPages ), ::oImageListPages:End(),),;
::oWnd := nil ,;
::oDevice:oPreview := nil ,;
::lExit := .T. )if ::oDevice:lPrvModal
if ::oWndMain == nil
StopUntil( { || ::lExit } )
else
// StopUntil( { || ::lExit .or. !IsWindow( WndMain():hWnd ) } ) // errors our when WndMain() becomes nil
hWndMain := WndMain():hWnd
StopUntil( { || ::lExit .or. !IsWindow( hWndMain ) } )
endif
endifreturn nil
//----------------------------------------------------------------------------//
METHOD BuildButtonBar() CLASS TPreview
local oImageList, oReBar, oBar, oHand, uRet, oBtn
DEFINE CURSOR ::oHand HAND
if lRebar
DEFINE IMAGELIST oImageList SIZE 16, 16oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "top2" ) ), nRGB( 192, 192, 192 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "previous2" ) ), nRGB( 192, 192, 192 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "next2" ) ), nRGB( 192, 192, 192 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "bottom2" ) ), nRGB( 192, 192, 192 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "zoom2" ) ), nRGB( 255, 0, 255 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "twopages2" ) ), nRGB( 192, 192, 192 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "printer" ) ), nRGB( 255, 0, 255 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "save" ) ), nRGB( 255, 0, 255 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "pdf" ) ), nRGB( 255, 0, 255 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "email" ) ), nRGB( 255, 255, 255 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "word2" ) ), nRGB( 255, 0, 255 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "excel" ) ), nRGB( 255, 0, 255 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "exit2" ) ), nRGB( 192, 192, 192 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "onepage2" ) ), nRGB( 192, 192, 192 ) )
oImageList:AddMasked( TBitmap():Define( ,,, FWBitmap( "onepage2" ) ), nRGB( 192, 192, 192 ) )
::oImageList = oImageListoReBar = TReBar():New( ::oWnd )
DEFINE TOOLBAR oBar OF oReBar SIZE 25, 25 IMAGELIST oImageList
::oBar = oBar
oReBar:InsertBand( oBar )oBar:nHeight -= 2
DEFINE TBBUTTON OF oBar ;
ACTION ::TopPage() ;
TOOLTIP FWString( "First" ) ;
MESSAGE FWString( "Go to first page" )DEFINE TBBUTTON OF oBar ;
ACTION ::PrevPage() ;
TOOLTIP FWString( "Previous" ) ;
MESSAGE FWString( "Go to previous page" )DEFINE TBBUTTON OF oBar ;
ACTION ::NextPage() ;
TOOLTIP FWString( "Next" ) ;
MESSAGE FWString( "Go to next page" )DEFINE TBBUTTON OF oBar ;
ACTION ::BottomPage() ;
TOOLTIP FWString( "Last" ) ;
MESSAGE FWString( "Go to last page" )DEFINE TBSEPARATOR OF oBar
DEFINE TBBUTTON OF oBar ;
ACTION ::Zoom() ;
TOOLTIP FWString( "Zoom" ) ;
MESSAGE FWString( "Page zoom" )DEFINE TBBUTTON OF oBar ;
ACTION ::TwoPages() ;
TOOLTIP FWString( "Two pages" ) ;
MESSAGE FWString( "Preview on two pages" )DEFINE TBSEPARATOR OF oBar
DEFINE TBMENU OF oBar ;
ACTION If( ValType( ::bPrint ) == 'B', Eval( ::bPrint, Self ), ::PrintPage() ) ;
TOOLTIP FWString( "Print" ) ;
MESSAGE FWString( "Print actual page" ) ;
MENU ::PrintersMenu()DEFINE TBMENU OF oBar ;
ACTION ::SaveAs( .f. ) ;
TOOLTIP FWString( "Save as" ) ;
MESSAGE FWString( "Save to DOC/PDF" ) ;
MENU ::SaveAsMenu()DEFINE TBBUTTON OF oBar ;
ACTION ::SaveAs( .t. ) ; //If( ::bSaveAsPDF == nil, FWSavePreviewToPDF( Self ), Eval( ::bSaveAsPDF, Self ) ) ;
TOOLTIP FWString( "Export to PDF" ) ;
MESSAGE FWString( "Export to PDF" )DEFINE TBBUTTON OF oBar ;
ACTION ::SendEmail() ;
TOOLTIP FWString( "Send by email as PDF" ) ;
MESSAGE FWString( "Send by email as PDF" )DEFINE TBBUTTON OF oBar ;
ACTION ::ExportToMSWord() ;
TOOLTIP FWString( "Export to MS Word" ) ;
MESSAGE FWString( "Export to MS Word" )DEFINE TBBUTTON OF oBar ;
ACTION ::ExportToMSExcel() ;
TOOLTIP FWString( "Export to Excel" ) ;
MESSAGE FWString( "Export to Excel" ) ;
WHEN ::CanExportToExcelDEFINE TBSEPARATOR OF oBar
DEFINE TBBUTTON OF oBar ;
ACTION ::oWnd:End() ;
TOOLTIP FWString( "Exit" ) ;
MESSAGE FWString( "Exit from preview" )else
if nStyle == 2010
DEFINE BUTTONBAR oBar OF ::oWnd 2010 ;
SIZE IfNil( nBtnW, 26 ), IfNil( nBtnH, If( LargeFonts(), 30, 26 ) )
else
DEFINE BUTTONBAR oBar OF ::oWnd ;
SIZE IfNil( nBtnW, 26 ), IfNil( nBtnH, If( LargeFonts(), 30, 26 ) )
endif
::oBar = oBar
oBar:l2007 := ( nStyle == 2007 )
oBar:l2010 := ( nStyle == 2010 )
oBar:l97Look := ( nStyle == 97 )
oBar:bRClicked := { || nil } // to retain the bar on top onlyDEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Go to first page" ) ;
ACTION ::TopPage() ;
TOOLTIP FWString( "First" )oBtn:hBitmap1 = FWBitmap( "top2" )
DEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Go to previous page" ) ;
ACTION ::PrevPage() ;
TOOLTIP FWString( "Previous" )oBtn:hBitmap1 = FWBitmap( "previous2" )
DEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Go to next page" ) ;
ACTION ::NextPage() ;
TOOLTIP FWString( "Next" )oBtn:hBitmap1 = FWBitmap( "Next2" )
DEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Go to last page" ) ;
ACTION ::BottomPage() ;
TOOLTIP FWString( "Last" )oBtn:hBitmap1 = FWBitmap( "Bottom2" )
DEFINE BUTTON ::oZoom OF oBar GROUP ;
MESSAGE FWString( "Page zoom" ) ;
ACTION ::Zoom() ;
TOOLTIP FWString( "Zoom" )::oZoom:hBitmap1 = FWBitmap( "Zoom2" )
DEFINE BUTTON ::oTwoPages OF oBar ;
MESSAGE FWString( "Preview on two pages" ) ;
ACTION ::TwoPages() ;
TOOLTIP FWString( "Two pages" )::oTwoPages:hBitmap1 = FWBitmap( "TwoPages2" )
DEFINE BUTTON oBtn OF oBar GROUP ;
MENU ::PrintersMenu() ;
MESSAGE FWString( "Print actual page" ) ;
ACTION If( ValType( ::bPrint ) == 'B', Eval( ::bPrint, Self ), ::PrintPage() ) ;
TOOLTIP FWString( "Print" )oBtn:hBitmap1 = FWBitmap( "Printer" )
if ! Empty( bUserBtns )
uRet = Eval( bUserBtns, Self, oBar )
endifif ! ( ValType( uRet ) == 'L' .and. uRet == .f. )
DEFINE BUTTON oBtn OF oBar ;
MENU ::SaveAsMenu() ;
MESSAGE FWString( "Save to DOC/PDF" ) ;
ACTION This:ShowPopUp() ;
TOOLTIP FWString( "Save to DOC/PDF" )oBtn:hBitmap1 = FWBitmap( "Save" )
DEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Export to PDF" ) ;
ACTION ::SaveAs( .t. ) ;
TOOLTIP FWString( "Export to PDF" )oBtn:hBitmap1 = FWBitmap( "PDF" )
DEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Send by email as PDF" ) ;
ACTION ::SendEmail() ;
TOOLTIP FWString( "Send by email as PDF" )oBtn:hBitmap1 = FWBitmap( "email" )
DEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Export to MS Word" ) ;
ACTION ::ExportToMSWord() ;
TOOLTIP FWString( "Export to MS Word" ) ;
WHEN ::CanExportToWordoBtn:hBitmap1 = FWBitmap( "Word2" )
DEFINE BUTTON oBtn OF oBar ;
MESSAGE FWString( "Export to Excel" ) ;
ACTION ::ExportToMSExcel() ;
TOOLTIP FWString( "Export to Excel" ) ;
WHEN ::CanExportToExceloBtn:hBitmap1 = FWBitmap( "Excel" )
endif
DEFINE BUTTON oBtn OF oBar GROUP ;
MESSAGE FWString( "Exit from preview" ) ;
ACTION ::oWnd:End() ;
TOOLTIP FWString( "Exit" )oBtn:hBitmap1 = FWBitmap( "Exit2" )
AEval( oBar:aControls, { | o | o:oCursor := ::oHand } )
endif
return nil
//----------------------------------------------------------------------------//
METHOD BuildWindow() CLASS TPreview
local oIcon, cTitle := FWString( "Printing Preview" )
local oCursor, oBar, nCol := 325
local oThis := Self, nRow := 7if Len( ::oDevice:aMeta ) < 1
return nil
endifDEFAULT ::oWndMain := WndMain()
::hNewRes := GetResources()
if ! File( ::cResFile )
#ifdef __CLIPPER__
::cResFile := "Preview.dll"
#else
if ! IsWin64()
::cResFile := "Prev32.dll"
else
::cResFile = "Prev64.dll"
endif
#endifendif
if SetResources( ::cResFile ) < 32
MsgStop( ::cResFile + " not found, imposible to continue",;
"FiveWin Printing Error" )
return nil
endifif ::oDevice != nil
cTitle = ::oDevice:cDocument
endifif ::oWndMain != nil
oIcon = ::oWndMain:oIcon
else
DEFINE ICON oIcon RESOURCE "Print"
endifDEFINE FONT ::oFont NAME GetSysFont() SIZE 0, -12
::CheckStyle()
if ! ::oDevice:lPrvModal .and. ::oWndMain != nil .and. ;
Upper( ::oWndMain:ClassName() ) == "TMDIFRAME"
DEFINE WINDOW ::oWnd ;
TITLE cTitle ;
COLOR CLR_BLACK,CLR_LIGHTGRAY ;
ICON oIcon ;
VSCROLL HSCROLL MDICHILD
else
DEFINE WINDOW ::oWnd ;
TITLE cTitle ;
COLOR CLR_BLACK,CLR_LIGHTGRAY ;
ICON oIcon ;
VSCROLL HSCROLL MENU ::BuildMenu()
endif::oWnd:SetFont( ::oFont )
::oWnd:oVScroll:SetRange( 0, 0 )
::oWnd:oHScroll:SetRange( 0, 0 )::cPageNum = FWString( "Page number:" )
::BuildButtonBar()if lRebar
DEFINE STATUSBAR OF ::oWnd PROMPT " " + FWString( "Preview" )
else
SET MESSAGE OF ::oWnd TO FWString( "Preview" ) CENTERED ;
NOINSET CLOCK DATE KEYBOARD
::oWnd:oMsgBar:l2007 := ( nStyle == 2007 )
::oWnd:oMsgBar:l2010 := ( nStyle == 2010 )
endif// We build the left thumbs listview
if ! ::lListViewHide
::BuildListView()
endif// We build the main metafiles to display the pages
::oMeta1 := TMetaFile():New( 0, 0, 0, 0,;
::oDevice:aMeta[ 1 ],;
::oWnd,;
CLR_BLACK,;
CLR_WHITE,;
::oDevice:nHorzRes(),;
::oDevice:nVertRes() )DEFINE CURSOR ::oCursor SEARCH
::oMeta1:oCursor := ::oCursor
::oMeta1:blDblClick := { | nRow, nCol, nKeyFlags | ;
::SetOrg1( nCol, nRow, nKeyFlags ) }::oMeta1:bKeyDown := { | nKey, nFlags | ::CheckKey( nKey, nFlags ) }
::oMeta1:bMouseWheel := { | nKeys, nDelta, nXPos, nYPos | ;
::CheckMouseWheel( nKeys, nDelta, nXPos, nYPos ) }::oMeta2 := TMetaFile():New( 0, 0, 0, 0, "",;
::oWnd, CLR_BLACK, CLR_WHITE, ::oDevice:nHorzRes(),;
::oDevice:nVertRes() )::oMeta2:oCursor = ::oCursor
::oMeta2:blDblClick := { | nRow, nCol, nKeyFlags | ;
::SetOrg2( nCol, nRow, nKeyFlags ) }::oMeta2:hide()
::SetFactor()
oBar := ::oBar
if .T. // ! lRebar
nCol := If( ! Empty( oBar:aControls ), ATail( oBar:aControls ):nRight, Len( oBar:aButtons ) * ( oBar:nBtnWidth + 2 ) ) + 30
nRow := Int( oBar:nHeight / 2 ) - 6
endifif nStyle >= 2007
oBar:bPainted = { || oBar:Say( nRow, nCol, "Factor:",,, ::oFont, .T., .T. ),;
oBar:Say( nRow, nCol+100, ::cPageNum + " " + ;
LTrim( Str( ::nPage, 4, 0 ) ) + " / " + ;
LTrim( Str( Len( ::oDevice:aMeta ) ) ),,, ::oFont, .T., .T. ) }endif
if nStyle < 2007
@ nRow, nCol SAY ::oSay PROMPT "Factor:" ;
SIZE 45, 15 PIXEL OF ::oBar FONT ::oFont::oSay:lTransparent = .T.
endif@ nRow - 4, nCol + 40 COMBOBOX ::oFactor VAR ::nZFactor ;
ITEMS { "1", "2", "3", "4", "5", "6", "7", "8", "9" } ;
OF ::oBar FONT ::oFont PIXEL SIZE 35,200 ;
ON CHANGE oThis:SetFactor( oThis:nZFactor )if nStyle < 2007
@ nRow, nCol + 100 SAY ::oPage PROMPT FWString( "Page number:" ) + ;
LTrim( Str( ::nPage, 4, 0 ) ) + " / " + ;
LTrim( Str( Len( ::oDevice:aMeta ) ) ) ;
SIZE 180, 15 PIXEL OF ::oBar FONT ::oFont
::oPage:lTransparent = .T.
endifif lRebar .or. nStyle >= 2007
#define NULL_BRUSH 5
FixSays( ::oBar:hWnd, GetStockObject( NULL_BRUSH ) )
endif::oFactor:Set3dLook( .T. )
::oWnd:oHScroll:bPos := { | nPos | ::HScroll( GO_POS, .f., nPos ) }
::oWnd:oVScroll:bPos := { | nPos | ::VScroll( GO_POS, .f., nPos ) }return nil
//----------------------------------------------------------------------------//
METHOD BuildListView() CLASS TPreview
local nSizeH, nSizeV, oBmp, n, aPrompts := {}
if ::oDevice:nHorzRes() > ::oDevice:nVertRes()
nSizeH = 100
nSizeV = 80
else
nSizeH = 80
nSizeV = 100
endifoBmp = 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( 33 - If( ::oWnd:oTop:IsKindOf( "TBAR" ), 6, 0 ),;
0, aPrompts, { | nPage | ::GoPage( nPage ) }, ::oWnd,;
,, .T.,, nSizeH + 45, ScreenHeight() - ;
If( ::oWnd:oBar != nil, ::oWnd:oBar:nHeight() - 2,;
::oWnd:oTop:nHeight() ) - ;
If( ::oWnd:oMsgBar != nil, ::oWnd:oMsgBar:nHeight(),;
::oWnd:oBottom:nHeight() ) - 38 )
::oLvw:SetImageList( ::oImageListPages )
::oLvw:bRClicked = { || If( ::oLvw:nLeft == 0,;
::oLvw:nLeft := ::oWnd:nWidth - ::oLvw:nWidth - 30,;
::oLvw:nLeft := 0 ) }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
//----------------------------------------------------------------------------//
METHOD BuildMenu() CLASS TPreview
local nFor, oMenu, oMItem
local lThemed := IsAppThemed()::aFactor := Array( 9 )
MENU oMenu
oMenu:l2007 := ( nStyle == 2007 )
oMenu:l2010 := ( nStyle == 2010 )
MENUITEM FWString( "&File" )
MENU
MENUITEM oMItem PROMPT FWString( "&Print" ) ACTION If( ValType( ::bPrint ) == 'B', Eval( ::bPrint, Self ), ::PrintPage() ) ;
MESSAGE FWString( "Print actual page" )oMItem:hBitmap = FWBitmap( "printer" )
SEPARATOR
MENUITEM oMItem PROMPT FWString( "&Exit" ) ACTION ::oWnd:End() ;
MESSAGE FWString( "Exit from preview" )oMItem:hBitmap = FWBitmap( "Exit2" )
ENDMENUMENUITEM FWString( "&Page" )
MENU
MENUITEM oMItem PROMPT FWString( "&First" ) ACTION ::TopPage() ;
MESSAGE FWString( "Go to first page" )oMItem:hBitmap = FWBitmap( "top2" )
MENUITEM oMItem PROMPT FWString( "&Previous" ) ACTION ::PrevPage() ;
MESSAGE FWString( "Go to previous page" )oMItem:hBitmap = FWBitmap( "previous2" )
MENUITEM oMItem PROMPT FWString( "&Next" ) ACTION ::NextPage() ;
MESSAGE FWString( "Go to next page" )oMItem:hBitmap = FWBitmap( "next2" )
MENUITEM oMItem PROMPT FWString( "&Last" ) ACTION ::BottomPage() ;
MESSAGE FWString( "Go to last page" )oMItem:hBitmap = FWBitmap( "bottom2" )
SEPARATOR
MENUITEM oMItem PROMPT ::oMenuZoom PROMPT FWString( "&Zoom" ) ACTION ::Zoom( .T. ) ;
MESSAGE FWString( "Page zoom" )oMItem:hBitmap = FWBitmap( "zoom2" )
MENUITEM oMItem PROMPT ::oMenuUnZoom PROMPT FWString( "&Normal" ) ACTION ::Zoom( .T. ) ;
MESSAGE FWString( "Page unzoom" )oMItem:hBitmap = FWBitmap( "onepage2" )
MENUITEM FWString( "&Factor" ) MESSAGE FWString( "Zoom factor" )
MENU
for nFor := 1 to Len( ::aFactor )
MENUITEM ::aFactor[ nFor ] ;
PROMPT "&" + LTrim( Str( nFor ) ) ;
MESSAGE FWString( "Factor" ) + " " + LTrim( Str( nFor ) ) ;
ACTION ( ::oFactor:Set( oMenuItem:nHelpId ),;
Eval( ::oFactor:bChange ) )next
ENDMENUSEPARATOR
MENUITEM ::oMenuTwoPages PROMPT FWString( "&Two pages" ) ACTION ::TwoPages( .T. ) ;
MESSAGE FWString( "Preview on two pages" )::oMenuTwoPages:hBitmap = FWBitmap( "TwoPages2" )
MENUITEM ::oMenuOnePage PROMPT FWString( "One &page" ) ACTION ::TwoPages(.T.) ;
MESSAGE FWString( "Preview on one page" )::oMenuOnePage:hBitmap = FWBitmap( "onepage2" )
ENDMENU
ENDMENU::oMenuUnZoom:Disable()
::oMenuOnePage:Disable()return oMenu
//----------------------------------------------------------------------------//
METHOD CheckStyle() CLASS TPreview
local o
if nStyle == nil
nStyle := 0
DEFAULT ::oWndMain := WndMain()if ::oWndMain != nil
if ( o := ::oWndMain:oMenu ) != nil
nStyle := Max( nStyle, If( o:l2010, 2010, 0 ) )
endifif nStyle < 2010 .and. ( o := ::oWndMain:oMsgBar ) != nil
nStyle := Max( nStyle, If( o:l2010, 2010, If( o:l2007, 2007, 0 ) ) )
endifif nStyle < 2010 .and. ( o := ::oWndMain:oTop ) != nil
if o:IsKindOf( "TRIBBONBAR" )
nStyle := Max( nStyle, If( o:l2010, 2010, 2007 ) )elseif o:IsKindOf( "TBAR" )
nStyle := Max( nStyle, If( o:l2010, 2010, 2007 ) )
if Empty( nStyle ) .and. Len( o:aControls ) > 0 .and. o:aControls[ 1 ]:l97look
nStyle := 97
endif
endif
endif
endif
endiflRebar := ( IsAppThemed() .and. Empty( nStyle ) .and. bUserBtns == nil .and. nBtnW == nil .and. nBtnH == nil )
return Self
//----------------------------------------------------------------------------//
METHOD GoPage( nPage ) CLASS TPreview
local aFiles := ::oDevice:aMeta
if nPage > Len( aFiles ) .OR. nPage < 1
MsgBeep()
return .F.
endif::nPage := nPage
::oMeta1:SetFile( aFiles[ ::nPage ] )
if nStyle < 2007
::oPage:SetText( FWString( "Page number:" ) + " " + ;
LTrim( Str( ::nPage, 4, 0 ) ) + " / " + ;
LTrim( Str( Len( aFiles ) ) ) )
endif::oBar:Refresh()
::oMeta1:Refresh()if ::lTwoPages
if Len( aFiles ) >= ::nPage + 1
::oMeta2:SetFile( aFiles[ ::nPage + 1 ] )
else
::oMeta2:SetFile( "" )
endif
::oMeta2:Refresh()
endif::oMeta1:SetFocus()
return .T.
//----------------------------------------------------------------------------//
METHOD PaintMeta() CLASS TPreview
local oRect, oRect1, oRect2
local aFiles := ::oDevice:aMeta // DEVICE
local nWidth, nHeight, nMaxWidth, nAspect, nMetaWidth, nGutterif ::oWnd != nil
if IsIconic( ::oWnd:hWnd )
return nil
endif
oRect := ::oWnd:GetCliRect()
oRect:nTop += ( ::oBar:nHeight + 4 )
oRect:nBottom -= ( IfNil( ::oWnd:oMsgBar, ::oWnd:oBottom ):nHeight + 4 + 5 ) // 5 shadow depth
nMaxWidth := oRect:nWidth * If( ::lTwoPages, 0.40, 0.95 )
nGutter := oRect:nWidth * 0.05nAspect := ::oDevice:nHorzSize() / ::oDevice:nVertSize()
nMetaWidth := If( ::lZoom, nMaxWidth, oRect:nHeight * nAspect )
nHeight := oRect:nHeight
if nMetaWidth > nMaxWidth
nMetaWidth := nMaxWidth
nHeight := nMetaWidth / nAspect
endifif ::lTwoPages
oRect1 := OClone( oRect )
WITH OBJECT oRect1
:nTop += ( oRect:nHeight - nHeight ) / 2
:nLeft := oRect:nLeft + oRect:nWidth / 2 - nMetaWidth - nGutter
:nWidth := nMetaWidth
:nHeight := nHeight
ENDoRect2 := OClone( oRect1 )
WITH OBJECT oRect2
:nLeft := oRect:nLeft + oRect:nWidth / 2 + nGutter
:nWidth := nMetaWidth
ENDif ::nPage == Len( aFiles )
::oMeta2:SetFile( "" )
else
::oMeta2:SetFile( aFiles[ ::nPage + 1 ] )
endif::oMeta1:SetCoors( oRect1 )
::oMeta2:SetCoors( oRect2 )
::oMeta1:Refresh()
::oMeta2:Show()else
oRect1 := OClone( oRect )
WITH OBJECT oRect1
:nTop += ( oRect:nHeight - nHeight ) / 2
:nLeft += ( oRect:nWidth - nMetaWidth ) / 2
:nWidth := nMetaWidth
:nHeight := nHeight
END::oMeta2:Hide()
::oMeta1:SetCoors( oRect1 )
::oMeta1:Refresh()endif
::oMeta1:SetFocus()
endif
return nil
//----------------------------------------------------------------------------//
METHOD NextPage() CLASS TPreview
local aFiles := ::oDevice:aMeta // DEVICE
if ::nPage >= Len( aFiles )
MsgBeep()
return nil
endif::nPage++
::oMeta1:SetFile( aFiles[ ::nPage ] )
if nStyle < 2007
::oPage:SetText( FWString( "Page number:" ) + LTrim( Str( ::nPage, 4, 0 ) ) + ;
" / " + LTrim( Str( Len( aFiles ) ) ) )
endif::oBar:Refresh()
::oMeta1:Refresh()if ::lTwoPages
if Len( aFiles ) >= ::nPage + 1
::oMeta2:SetFile( aFiles[ ::nPage + 1 ] )
else
::oMeta2:SetFile( "" )
endif
::oMeta2:Refresh()
endif::oMeta1:SetFocus()
return nil
//----------------------------------------------------------------------------//
METHOD PrevPage() CLASS TPreview
local aFiles := ::oDevice:aMeta // DEVICE
if ::nPage == 1
MsgBeep()
return nil
endif::nPage--
::oMeta1:SetFile( aFiles[ ::nPage ] )
if nStyle < 2007
::oPage:SetText( FWString( "Page number:" ) + LTrim( Str( ::nPage, 4, 0 ) ) + ;
" / " + LTrim( Str( Len( aFiles ) ) ) )
endif
::oBar:Refresh()
::oMeta1:Refresh()if ::lTwoPages
if Len( aFiles ) >= ::nPage + 1
::oMeta2:SetFile( aFiles[ ::nPage + 1 ] )
else
::oMeta2:SetFile( "" )
endif
::oMeta2:Refresh()
endif::oMeta1:SetFocus()
return nil
//----------------------------------------------------------------------------//
METHOD TopPage() CLASS TPreview
local aFiles := ::oDevice:aMeta // DEVICE
if ::nPage == 1
MsgBeep()
return nil
endif::nPage = 1
::oMeta1:SetFile( aFiles[ ::nPage ] )
if nStyle < 2007
::oPage:SetText( FWString( "Page number:" ) + " " + LTrim( Str( ::nPage, 4, 0 ) ) + ;
" / " + LTrim( Str( Len( aFiles ) ) ) )
endif
::oBar:Refresh()
::oMeta1:Refresh()if ::lTwoPages
if Len( aFiles ) >= ::nPage + 1
::oMeta2:SetFile( aFiles[ ::nPage + 1 ] )
else
::oMeta2:SetFile( "" )
endif
::oMeta2:Refresh()
endif::oMeta1:SetFocus()
return nil
//----------------------------------------------------------------------------//
METHOD BottomPage() CLASS TPreview
local aFiles := ::oDevice:aMeta // DEVICE
if ::nPage == Len( aFiles )
MsgBeep()
return nil
endif::nPage = Len( aFiles )
::oMeta1:SetFile( aFiles[ ::nPage ] )
if nStyle < 2007
::oPage:SetText( FWString( "Page number:" ) + " " + LTrim( Str( ::nPage, 4, 0 ) ) + ;
" / " + LTrim( Str( Len( aFiles ) ) ) )
endif
::oBar:Refresh()
::oMeta1:Refresh()if ::lTwoPages
::oMeta2:SetFile( "" )
::oMeta2:Refresh()
endif::oMeta1:SetFocus()
return nil
//----------------------------------------------------------------------------//
METHOD TwoPages( lMenu ) CLASS TPreview
DEFAULT lMenu := .F.
::lTwoPages := ! ::lTwoPages
if ::lTwoPages
if Len( ::oDevice:aMeta) == 1 // solo hay una pagina // DEVICE
::lTwoPages := ! ::lTwoPages
MsgBeep()
return nil
endifif ::oDevice:nHorzSize() >= ; // Apaisado // DEVICE
::oDevice:nVertSize() // DEVICE
::lTwoPages := ! ::lTwoPages
MsgBeep()
return nil
endifif ::lZoom
::Zoom( .T. )
endifif ! lRebar
::oTwoPages:FreeBitmaps()
::oTwoPages:hBitmap1 = FWBitmap( "OnePage2" )
::oTwoPages:cMsg = FWString( "Preview on one page" )
::oTwoPages:cTooltip = StrTran( FWString( "One &page" ), '&', '' )
else
::oBar:ChangeBitmap( 6, 10+2 )
::oBar:SetTooltip( 6, StrTran( FWString( "One &page" ), '&', '' ) )
::oBar:SetMessage( 6, FWString( "Preview on one page" ) )
endifif ::oWnd:oMenu != nil
::oMenuTwoPages:Disable()
::oMenuOnePage:Enable()
endif::oLvw:Hide()
else
if ! lRebar
::oTwoPages:FreeBitmaps()
::oTwoPages:hBitmap1 = FWBitmap( "twopages2" )
::oTwoPages:cMsg = FWString( "Preview on two pages" )
::oTwoPages:cTooltip = FWString( "Two pages" )
else
::oBar:ChangeBitmap( 6, 6 )
::oBar:SetTooltip( 6, FWString( "&Two pages" ) )
::oBar:SetMessage( 6, FWString( "Preview on two pages" ) )
endifif ::oWnd:oMenu != nil
::oMenuTwoPages:Enable()
::oMenuOnePage:Disable()
endifif ! ::lListViewHide
::oLvw:Show()
endifendif
if lMenu .and. ! IsAppThemed()
::oTwoPages:Refresh()
endif::oWnd:Refresh()
::PaintMeta()return nil
//----------------------------------------------------------------------------//
METHOD Zoom( lMenu ) CLASS TPreview
DEFAULT lMenu := .F.
::lZoom := ! ::lZoom
if ::oLvw != nil
if IsWindowVisible( ::oLvw:hWnd )
::oLvw:Hide()
else
::oLvw:Show()
endif
endifif ::lZoom
if ::lTwoPages
::TwoPages( .T. )
endifif ! lRebar
::oZoom:FreeBitmaps()
::oZoom:hBitmap1 = FWBitmap( "onepage2" ) //"Unzoom2" )
::oZoom:cMsg := FWString( "Page unzoom" )
::oZoom:cTooltip := StrTran( FWString( "&Normal" ), "&", "" )
else
::oBar:ChangeBitmap( 5,5 )
::oBar:SetTooltip( 5, StrTran( FWString( "&Normal" ), "&", "" ) )
::oBar:SetMessage( 5, FWString( "Page unzoom" ) )
endifif ::oWnd:oMenu != nil
::oMenuZoom:Disable()
::oMenuUnZoom:Enable()
endif::oWnd:oVScroll:SetRange( 1, VSCROLL_RANGE )
if ::nZFactor > 1
::oWnd:oHScroll:SetRange( 1, HSCROLL_RANGE )
endif::oMeta1:ZoomIn()
else
if ! lRebar
::oZoom:FreeBitmaps()
::oZoom:hBitmap1 = FWBitmap( "Zoom2" )
::oZoom:cMsg = FWString( "Page zoom" )
::oZoom:cTooltip := FWString( "Zoom" )
else
::oBar:ChangeBitmap( 5, 5 )
::oBar:SetTooltip( 5, FWString( "Zoom" ) )
::oBar:SetMessage( 5, FWString( "Page zoom" ) )
endifif ::oWnd:oMenu != nil
::oMenuZoom:Enable()
::oMenuUnZoom:Disable()
endif::oWnd:oVScroll:SetRange( 0, 0 )
::oWnd:oHScroll:SetRange( 0, 0 )::oMeta1:ZoomOut()
::nZFactor = 1
if ::oWnd:oMenu != nil
AEval( ::aFactor, { | val, elem | val:SetCheck( ( elem == 1 ) ) } )
endif
::oFactor:Set( 1 )endif
if lMenu .and. ! IsAppThemed()
::oZoom:Refresh()
endif::oWnd:Refresh() // Fix for clearing shadows when unzoomed .. fwh 11.5
::PaintMeta()return nil
//----------------------------------------------------------------------------//
METHOD VScroll( nType, lPage, nSteps ) CLASS TPreview
local nYfactor, nYorig, nStep
DEFAULT lPage := .F.
if nType == GO_UP
if ::oWnd:oVScroll:GetPos() <= ::oWnd:oVScroll:nMin
return nil
endif
else
if ::oWnd:oVScroll:GetPos() > ::oWnd:oVScroll:nMax
return nil
endif
endifnYfactor := Int( ::oDevice:nVertRes() / ::oWnd:oVScroll:nMax ) // DEVICE
if nSteps != nil
nStep := nSteps
elseif lPage
nStep := ::oWnd:oVScroll:nMax / 10
else
nStep := 1
endifif nType == GO_UP
nStep := -nStep
elseif nType == GO_POS
::oWnd:oVscroll:SetPos( nSteps )
nStep := 0
endifnYorig := nYfactor * ( ::oWnd:oVScroll:GetPos() + nStep - 1 )
if nYorig > ::oDevice:nVertRes() // DEVICE
nYorig := ::oDevice:nVertRes() // DEVICE
endifif nYorig < 0
nYorig := 0
endif::oMeta1:SetOrg( nil, nYorig / ::oDevice:nVertRes() * 10 ) // DEVICE
::oMeta1:Refresh()
return nil
//----------------------------------------------------------------------------//
METHOD HScroll( nType, lPage, nSteps ) CLASS TPreview
local nXfactor, nXorig, nStep
DEFAULT lPage := .F.
if nType == GO_UP
if ::oWnd:oHScroll:GetPos() <= ::oWnd:oHScroll:nMin
return nil
endif
else
if ::oWnd:oHScroll:GetPos() > ::oWnd:oHScroll:nMax
return nil
endif
endifnXfactor := Int( ::oDevice:nHorzRes() / ::oWnd:oHScroll:nMax ) // DEVICE
if nSteps != nil
nStep := nSteps
elseif lPage
nStep := ::oWnd:oHScroll:nMax/10
else
nStep := 1
endifif nType == GO_LEFT
nStep := -nStep
elseif nType == GO_POS
::oWnd:oHscroll:SetPos( nSteps )
nStep := 0
endifnXorig := nXfactor * ( ::oWnd:oHScroll:GetPos() + nStep - 1 )
if nXorig > ::oDevice:nHorzRes() // DEVICE
nXorig := ::oDevice:nHorzRes() // DEVICE
endifif nXorig < 0
nXorig := 0
endif::oMeta1:SetOrg( nXorig / ::oDevice:nHorzRes() * 10, nil ) // DEVICE
::oMeta1:Refresh()
return nil
//----------------------------------------------------------------------------//
METHOD SetOrg1( nX, nY ) CLASS TPreview
local oCoors
local nXStep, nYStep, nXFactor, nYFactor,;
nWidth, nHeight, nXOrgif ::lZoom
::Zoom( .T. )
return nil
endifoCoors := ::oMeta1:GetRect()
nWidth := oCoors:nRight - oCoors:nLeft + 1
nHeight := oCoors:nBottom - oCoors:nTop + 1if .f.
nXStep := Max( Int( nX / nWidth * HSCROLL_RANGE ) - 9, 0 )
nXFactor := Int( ::oDevice:nHorzRes() / HSCROLL_RANGE ) // DEVICE
endifif .f.
nYStep := Max( Int( nY / nHeight * VSCROLL_RANGE ) - 9, 0 )
nYFactor := Int( ::oDevice:nVertRes() / VSCROLL_RANGE ) // DEVICE
endif::Zoom( .T. )
if ! Empty( nXStep )
::HScroll( 2,, nxStep )
::oWnd:oHScroll:SetPos( nxStep )
endifif ! Empty( nYStep )
::VScroll( 2,, nyStep )
::oWnd:oVScroll:SetPos( nyStep )
endifreturn nil
//----------------------------------------------------------------------------//
METHOD SetOrg2( nX, nY ) CLASS TPreview
local oCoors
local aFiles
local nXStep, nYStep, nXFactor, nYFactor,;
nWidth, nHeight, nXOrgif ::oMeta2:cCaption == ""
return nil
endifif ::lZoom
::Zoom( .T. )
return nil
endifoCoors := ::oMeta2:GetRect()
nWidth := oCoors:nRight - oCoors:nLeft + 1
nHeight := oCoors:nBottom - oCoors:nTop + 1if .f.
nXStep := Max( Int( nX / nWidth * HSCROLL_RANGE ) - 9, 0 )
nXFactor := Int( ::oDevice:nHorzRes() / HSCROLL_RANGE )
endifif .f.
nYStep := Max( Int( nY / nHeight * VSCROLL_RANGE ) - 9, 0 )
nYFactor := Int( ::oDevice:nVertRes() / VSCROLL_RANGE ) // DEVICE
endif::oMeta1:SetFile( ::oMeta2:cCaption )
aFiles := ::oDevice:aMeta // DEVICE
if ::nPage = Len( aFiles )
::oMeta2:SetFile( "" )
else
::oMeta2:SetFile( aFiles[ ++::nPage ] )
endifif nStyle < 2007
::oPage:Refresh()
endif
::oBar:Refresh()::Zoom( .T. )
if ! Empty( nXStep )
::HScroll( 2,, nxStep )
::oWnd:oHScroll:SetPos( nxStep )
endifif ! Empty( nYStep )
::VScroll( 2,, nyStep )
::oWnd:oVScroll:SetPos( nyStep )
endifreturn nil
//----------------------------------------------------------------------------//
METHOD CheckKey( nKey, nFlags ) CLASS TPreview
if ! ::lZoom
do case
case nKey == VK_HOME
::TopPage()case nKey == VK_END
::BottomPage()case nKey == VK_PRIOR
::PrevPage()case nKey == VK_NEXT
::NextPage()endcase
else
do case
case nKey == VK_UP
::oWnd:oVScroll:GoUp()case nKey == VK_PRIOR
::oWnd:oVScroll:PageUp()case nKey == VK_DOWN
::oWnd:oVScroll:GoDown()case nKey == VK_NEXT
::oWnd:oVScroll:PageDown()case nKey == VK_LEFT
::oWnd:oHScroll:GoUp()case nKey == VK_RIGHT
if ::oWnd:oHScroll != nil .and. ::oWnd:oHScroll:nMax > 0
::oWnd:oHScroll:GoDown()
endifcase nKey == VK_HOME
::oWnd:oVScroll:GoTop()
::oWnd:oHScroll:GoTop()
::oMeta1:SetOrg( 0, 0 )
::oMeta1:Refresh()case nKey == VK_END
::oWnd:oVScroll:GoBottom()
::oWnd:oHScroll:GoBottom()
::oMeta1:SetOrg( .8 * ::oDevice:nHorzRes(), .8 * ::oDevice:nVertRes() ) // DEVICE
::oMeta1:Refresh()
endcase
endifreturn nil
//----------------------------------------------------------------------------//
METHOD CheckMouseWheel( nKeys, nDelta, nXPos, nYPos ) CLASS TPreview
if ! ::lZoom
if lAnd( nKeys, MK_MBUTTON )
if nDelta > 0
::TopPage()
else
::BottomPage()
endif
else
if nDelta > 0
::PrevPage()
else
::NextPage()
endif
endif
else
if lAnd( nKeys, MK_MBUTTON )
if nDelta > 0
if ::oWnd:oVScroll:GetPos() > ::oWnd:oVScroll:nMin
::oWnd:oVScroll:PageUp()
endif
else
if ::oWnd:oVScroll:GetPos() < ::oWnd:oVScroll:nMax
::oWnd:oVScroll:PageDown()
endif
endif
else
if nDelta > 0
if ::oWnd:oVScroll:GetPos() > ::oWnd:oVScroll:nMin
::oWnd:oVScroll:GoUp()
endif
else
if ::oWnd:oVScroll:GetPos() < ::oWnd:oVScroll:nMax
::oWnd:oVScroll:GoDown()
endif
endif
endif
endifreturn nil
//----------------------------------------------------------------------------//
METHOD SelPrinter( cPrinter ) CLASS TPreview
local cOldPrinter := GetProfString( "windows", "device" , "" )
WriteProfString( "windows", "device", cPrinter )
SysRefresh()
PrinterInit()DeleteDC( ::oDevice:hDC )
::oDevice:hDC = GetPrintDefault( GetActiveWindow() )
::oDevice:cModel = cPrinterSysRefresh()
WriteProfString( "windows", "device", cOldPrinter )RETURN nil
//----------------------------------------------------------------------------//
METHOD SetFactor( nValue ) CLASS TPreview
local lInit := .F.
if nValue == nil .and. ::oWnd:oMenu != nil
AEval( ::aFactor, { | v, e | v:nHelpId := e } )
nValue := ::nZFactor
lInit := .T.
endifif ::oWnd:oMenu != nil
AEval( ::aFactor, { | val, elem | val:SetCheck( elem == nValue ) } )
endif::oMeta1:SetZoomFactor( ::nZFactor, ::nZFactor * 2 )
if ! ::lZoom .and. ! lInit
::Zoom( .T. )
endifif ::lZoom
::oWnd:oVScroll:SetRange( 1, VSCROLL_RANGE )
if ::nZFactor > 1
::oWnd:oHScroll:SetRange( 1, HSCROLL_RANGE )
else
::oWnd:oHScroll:SetRange( 0, 0 )
endif
endif::oMeta1:SetFocus()
return nil
//----------------------------------------------------------------------------//
METHOD PrintersMenu() CLASS TPreview
local oPop, aPrinters := aGetPrinters()
MENU oPop POPUP
oPop:l2007 = ( nStyle == 2007 )
oPop:l2010 = ( nStyle == 2010 )AEval( aPrinters, { | cPrinter | MenuAddItem( cPrinter,,;
cPrinter $ ::oDevice:cModel,,;
{ | oMenuItem | ::SelPrinter( oMenuItem:cPrompt ),;
oMenuItem:oMenu:UnCheckAll(), oMenuItem:SetCheck( .T. ) } ) } )
ENDMENUreturn oPop
//----------------------------------------------------------------------------//
METHOD PrintPage() CLASS TPreview
local hMeta := ::oMeta1:hMeta
local oDlg, oRad, oPageIni, oPageEnd
local nOption := 1, nFirst := 1, nLast := Len( ::oDevice:aMeta ) // DEVICE
local oThis := Selfif nLast == 1
::PrintPrv( nil, nOption, nFirst, nLast )
return nil
endifDEFINE DIALOG oDlg SIZE 400, 183 TITLE FWString( "Printing" )
@ 8, 8 GROUP PROMPT FWString( "Printing range" ) SIZE 135, 72 PIXEL OF oDlg
@ 18, 18 RADIO oRad VAR nOption ;
ITEMS FWString( "All" ), FWString( "Current page" ), FWString( "Pages" ) ;
ON CHANGE If( nOption == 3,;
( oPageIni:Enable(), oPageEnd:Enable() ),;
( oPageIni:Disable(), oPageEnd:Disable() ) ) PIXEL@ 61, 30 SAY FWString( "From" ) OF oDlg PIXEL
@ 60, 53 GET oPageIni ;
VAR nFirst PICTURE "@K 99999" ;
VALID If( nFirst < 1 .or. nFirst > nLast, ( MsgBeep(), .F. ), .T. ) ;
OF oDlg SIZE 22, 11 PIXEL@ 61, 80 SAY FWString( "To" ) OF oDlg PIXEL
@ 60, 103 GET oPageEnd ;
VAR nLast PICTURE "@K 99999" ;
VALID If( nLast < nFirst .or. nLast > Len( ::oDevice:aMeta ),; // DEVICE
( MsgBeep(),.F. ), .T.) OF oDlg PIXEL@ 10, 152 BUTTON FWString( "&Ok" ) OF oDlg SIZE 42, 14 ;
ACTION oThis:PrintPrv( oDlg, nOption, nFirst, nLast ) PIXEL@ 28, 152 BUTTON FWString( "&Cancel" ) OF oDlg SIZE 42, 14 ;
ACTION oDlg:End() PIXELACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( oPageIni:Disable(), oPageEnd:Disable(), .T. )return nil
//----------------------------------------------------------------------------//
METHOD PrintPrv( oDlg, nOption, nPageIni, nPageEnd ) CLASS TPreview
local oDevice := ::oDevice // DEVICE
local aFiles := oDevice:aMeta
local hMeta := ::oMeta1:hMeta
local nForCursorWait()
StartDoc( oDevice:hDC, oDevice:cDocument )
do case
case nOption == 1 // All
for nFor := 1 to Len( aFiles )
StartPage( oDevice:hDC )
hMeta := GetEnhMetaFile( aFiles[ nFor ] )
PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
DeleteEnhMetafile( hMeta )
EndPage( oDevice:hDC )
nextcase nOption == 2 // Current page
StartPage( oDevice:hDC )
hMeta := ::oMeta1:hMeta
PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
EndPage( oDevice:hDC )case nOption == 3 // Range
for nFor := nPageIni to nPageEnd
StartPage( oDevice:hDC )
hMeta := GetEnhMetaFile( aFiles[ nFor ] )
PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
DeleteEnhMetafile( hMeta )
EndPage( oDevice:hDC )
nextendcase
EndDoc( oDevice:hDC )
CursorArrow()
if oDlg != nil
oDlg:End()
endifreturn nil
//----------------------------------------------------------------------------//
METHOD ExportToMSWord() CLASS TPreview
local oDoc
if ValType( ::bExportToWord ) == 'B'
return Eval( ::bExportToWord, Self )
endifoDoc = ConvertToWordDoc( Self )
if oDoc != nil
oDoc:Application:Visible := .t.
endifreturn Self
//----------------------------------------------------------------------------//
METHOD SaveAsMenu() CLASS TPreview
local oPop, oMItem
MENU oPop POPUP
oPop:l2007 = ( nStyle == 2007 )
oPop:l2010 = ( nStyle == 2010 )MENUITEM oMItem PROMPT FWString( "DOC Format" ) ;
ACTION ::SaveAs( .f. )oMItem:hBitmap = FWBitmap( "Word2" )
MENUITEM oMItem PROMPT FWString( "PDF Format" ) ;
ACTION ::SaveAs( .t. )oMItem:hBitmap = FWBitmap( "pdf" )
ENDMENUreturn oPop
//----------------------------------------------------------------------------//
METHOD ResizeListView() CLASS TPreview
if ::oWnd != nil .and. ::oLvw != nil
::oLvw:nHeight = ::oWnd:GetCliRect():nHeight - 2 - ;
If( ::oWnd:oBar != nil, ::oWnd:oBar:nHeight() - 2,;
::oWnd:oTop:nHeight() ) - ;
If( ::oWnd:oMsgBar != nil, ::oWnd:oMsgBar:nHeight(),;
::oWnd:oBottom:nHeight() )
endifreturn nil
//----------------------------------------------------------------------------//
METHOD SaveAs( lPDF, cFile, lView ) CLASS TPreview
static lWordPDF := .t.
local oWord, nVer, oDoc
local cExt, cMsgif lPDF
if ValType( ::bSaveAsPDF ) == 'B'
return Eval( ::bSaveAsPDF, Self, cFile, lView )
elseif ! lWordPDF // tested earlier and found Word with PDF plugin not availble
return FWSavePreviewToPDF( Self, cFile, lView )
endif
else
if ValType( ::bSaveAsWord ) == 'B'
return Eval( ::bSaveAsWord, Self, cFile, lView )
endif
endifoWord := WinWordObj()
if oWord == nil
lWordPDF := .f.
if lPDF
return FWSavePreviewToPDF( Self, cFile, lView )
ELSE
return ToWordDocViaWriter( Self, , "W" )
Endif
endif
nVer := Val( oWord:Version )if lPDF
if nVer >= 12.0 .and. WordHasPDFPlugIn()
cExt := "*.pdf"
else
lWordPDF := .f.
return FWSavePreviewToPDF( Self, cFile, lView )
endif
else
cExt = If( nVer < 12.0, "*.doc", "*.docx; *.doc" )
endif
cMsg = If( lPDF, "PDF", "Doc" ) + " " + ;
FWString( "File to Save" ) + "( " + cExt + ") |" + cExt + "|"if Empty( cFile ) .and. Empty( cFile := cGetFile( cMsg, FWString( "File to Save" ), 1, CurDir(), , .t. ) )
return nil
endifif !( Lower( cFileExt( cFile ) ) $ cExt )
cFile = cFilePath( cFile ) + cFileNoExt( cFile ) + ;
If( lPDF, ".pdf", If( nVer < 12.0, ".doc", ".docx" ) )
endifDEFAULT lView := MsgYesNo( FWString( "View" ) + " " + cFile + "?", FWString( "Please select" ) )
oDoc = ConvertToWordDoc( Self )if oDoc != nil
TRY
oDoc:ExportAsFixedFormat( cFile, 17, lView )
CATCH
lWordPDF := .f.
// MsgInfo( FWString( "PDF Plugin Error" ), FWString( "Information" ) )
END
if lPDF
oDoc:Close( .f. )
if ! lWordPDF
// word failed to save as PDF due to PDF Plugin Error
return FWSavePreviewToPDF( Self, cFile, lView )
endif
else
if nVer >= 12.0
oDoc:SaveAs( cFile, If( Lower( cFileExt( cFile ) ) == 'doc', 0, 16 ) )
else
oDoc:SaveAs( cFile )
endif
if lView
oDoc:Application:Visible := .t.
else
oDoc:Close( .f. )
endif
endif
endifreturn cFile
//----------------------------------------------------------------------------//
METHOD SendEmail() CLASS TPreview
local oMail, cName, cFile
cName := If( ::oReport != nil, ::oReport:cName, ::oDevice:cDocument )
cFile := cFilePath( ::oDevice:aMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ;
Left( HB_TToS( HB_DateTime() ), 14 ) + ".pdf"CursorWait()
cFile := ::SaveAs( .t., cFile, .f. )
CursorArrow()if ! File( cFile )
MsgInfo( FWString( "PDF not saved to send Email" ), FWString( "Information" ) )
elseif ::bEmail != nil
Eval( ::bEmail, Self, cName, cFile )
else
DEFINE MAIL oMail ;
SUBJECT cName ;
TEXT "" ;
FILES cFile, cFile ;
FROM USERACTIVATE MAIL oMail
// MsgInfo( oMail:nRetCode ) check the returned code!
endif::oMeta1:SetFocus()
return nil
//----------------------------------------------------------------------------//
function RPreview( oDevice, oReport )
local oPreview := TPreview():New( oDevice, oReport )
oDevice:oPreview := oPreview
oPreview:Activate()
return nil
//----------------------------------------------------------------------------//
function ConvertToWordDoc( oPreview )
local aFiles := oPreview:oDevice:aMeta
local oWord, oDoc, cEMFif Len( aFiles ) > 0
if ( oWord := WinWordObj() ) == nil
lWord := .f.
MsgAlert( FWString( "MS Word not installed" ), FWString( "Alert" ) )
oDoc = ToWordDocViaWriter( oPreview, aFiles, "W" )
else
lWord := .t.
oDoc = oWord:Documents:Add()
if oDoc == nil
MsgAlert( FWString( "Failed to Create Word Document" ), FWString( "Alert" ) )
else
oDoc:PageSetup:Orientation := If( oPreview:oDevice:GetOrientation() == 1, 0, 1 )
WITH OBJECT oDoc:PageSetup
:LeftMargin := 0
:TopMargin := 0
:RightMargin := 0
:BottomMargin := 0
END
for each cEMF in aFiles
oWord:Selection:InlineShapes:AddPicture( cEMF, .f., .t. )
next
// oDoc:Application:Visible := .t.
endif
endif
else
MsgAlert( FWString( "There is no output for export" ), FWString( "Alert" ) )
endifreturn oDoc
//----------------------------------------------------------------------------//
Function ToWordDocViaWriter( oPreview, aFiles, cFileType )
local oWriter, oDesktop, oDoc, oCusor, oText, oGraphic, cEMF, cURL, i, aProp
local oStyle, nPageWidth, nPageHeight, aPdfFilters
local cExt, cMsg, cFile, oSize, oCursorDEFAULT cFileType := "W" // ByDefault Word File
DEFAULT aFiles := oPreview:oDevice:aMetaif Len( aFiles ) == 0
MsgAlert( FWString( "There is no output for export" ), FWString( "Alert" ) )
Return nil
Endifif ( oWriter := SunCalcObj() ) == nil
lCalc := .f.
MsgAlert( FWString( "No .Doc file manipulation software installed" ), FWString( "Alert" ) )
Return NIL
Endif
lCalc := .t.
oDesktop := oWriter:CreateInstance( "com.sun.star.frame.Desktop" )// Create OpenOffice Word Instance with the Window Hidden Property
aProp = {}
AAdd( aProp, GetPropertyValue( oWriter, "Hidden", .T. ) )
oDoc = oDesktop:LoadComponentFromURL( "private:factory/swriter", "_blank", 0, aProp )
oDoc:Refresh()// Set Page Orientation Properties ie Portrait/Landscape
aProp = {}
AAdd( aProp, GetPropertyValue( oWriter, "PaperOrientation",;
If( oPreview:oDevice:GetOrientation() == 1, 0, 1 ) ) ) // 0-> Portrait, 1-> Landscape
oDoc:Printer:= aPropoStyle = oDoc:StyleFamilies:getByName( "PageStyles" ):getByName( "Standard" )
// Set Page Margins
oStyle:LeftMargin = 0
oStyle:TopMargin = 0
oStyle:RightMargin = 0
oStyle:BottomMargin = 0// Find out the Page's Size ie Height and width. Later this size is used to set the EMF image size while inserting on the page
nPageWidth = oStyle:Size:Width - oStyle:LeftMargin - oStyle:RightMargin
nPageHeight = oStyle:Size:Height - oStyle:TopMargin - oStyle:BottomMargin// Create a Size Structure. This size structure is later used to set the image size
oSize:= oWriter:Bridge_GetStruct( "com.sun.star.awt.Size" )
oSize:Width:=nPageWidth
oSize:Height = nPageHeighti = 1
for each cEMF in aFiles
cURL = ConvertToOoURL( cEMF )
oText = oDoc:GetText()
oCursor = oText:CreateTextCursor()
oCursor:GotoEnd( .F. )if i > 1 // Applicable only for page nos > 1
oText:InsertControlCharacter( oCursor, 0, .F. ) // 0->New Paragraph, 1->New line in a paragraph, 5->This control character appends a new paragraph.
endifoGraphic = oDoc:CreateInstance( "com.sun.star.text.GraphicObject" )
oGraphic:SetPropertyValue( "GraphicURL", cURL )
oGraphic:SetPropertyValue( "AnchorType", 1 ) // com.sun.star.text.TextContentAnchorType.AS_CHARACTER
oGraphic:SetSize( oSize )oText:InsertTextContent( oCursor:End, oGraphic, .F.)
i++
next// Convert the image links and then Embedd the images onto the document
OoEmbeddGraphics( oWriter, oDoc )cExt = If( cFileType == "W", "*.doc", "*.pdf" )
cMsg = If( cFileType == "W", "Doc", "PDF" ) + " " + ;
FWString( "File to Save" ) + "( " + cExt + ") |" + cExt + "|"if Empty( cFile := cGetFile( cMsg, "File to Save", 1, CurDir(), , .T. ) )
oDoc:Close( 1 ) // To Close OpenOffice Writer
oDesktop:terminate() // To close the OpenOffice QuickOpen Window
return nil
endifif ! ( Lower( cFileExt( cFile ) ) $ cExt )
cFile = cFilePath( cFile ) + cFileNoExt( cFile ) + ;
If( cFileType == "W", ".doc", ".pdf" )
endif// Convert the FileName and Path to OpenOffice Standard URL
cURL = ConvertToOoURL( cFile )
// The Word or PDF file will be saved in the Temp Folder
* cURL = ConvertToOoURL( Getenv( "TMP" ) + "\" )
* cURL = cURL + cTempFile()if cFileType == "W" // Word
* cURL += "Doc"// Save the Writer File as Word 97/2000/XP .Doc file. This is the most compatible format
aProp = {}
AAdd( aProp, GetPropertyValue( oWriter, "FilterName", "MS Word 97" ) )
oDoc:StoreToURL( cURL, aProp )Else // PDF
* cURL += "Pdf"// Save the Writer File as PDF file
aPdfFilters = {}
AAdd( aPdfFilters, GetPropertyValue( oWriter, "UseLosslessCompression", .T. ) ) // Specifies if graphics are exported to PDF using a lossless compression. If this property is set to true, it overwrites the "Quality" property
AAdd( aPdfFilters, GetPropertyValue( oWriter, "ReduceImageResolution", .F. ) )
AAdd( aPdfFilters, GetPropertyValue( oWriter, "Quality", 50 ) ) // Value can be between 1 to 100aProp = {}
AAdd( aProp, GetPropertyValue( oWriter, "FilterName", "writer_pdf_Export" ) )
AAdd( aProp, GetPropertyValue( oWriter, "FilterData", aPdfFilters ) )oDoc:StoreToURL( cURL, aProp )
Endif
// Inform the user about the Exported Filename along with the Full path
* MsgInfo( cUrl )* oDoc:GetCurrentController():GetFrame():GetContainerWindow():SetVisible( .T. )
oDoc:Close( 1 ) // To Close OpenOffice Word
oDesktop:Terminate() // To close the OpenOffice QuickOpen Window
oDoc = nilreturn nil
//------------------------------------//
static Function OoEmbeddGraphics(oWriter,oDoc)
local oDrawPage, oProvider, aProp, i, oGraphic
oDrawPage = oDoc:DrawPage
oProvider = oWriter:CreateInstance( "com.sun.star.graphic.GraphicProvider" )if oDrawPage:hasElements()
for i = 0 To oDrawPage:Count - 1
oGraphic = oDrawPage:getByIndex( i )
if oGraphic:supportsService( "com.sun.star.text.TextGraphicObject" )
aProp = {}
AAdd( aProp, GetPropertyValue( oWriter, "URL", oGraphic:GraphicUrl ) )
oGraphic:Graphic = oProvider:queryGraphic( aProp )
endIf
next i
endifreturn nil
//----------------------------------------------------------------------------//
static function WordHasPDFPlugIn()
static lPDF
local oWord, oFilter
if lPDF == nil
lPDF = .F.
if ( oWord := WinWordObj() ) != nil .and. Val( oWord:Version ) >= 12.0
for each oFilter in oWord:FileDialog( 2 ):Filters
if "*.pdf" $ oFilter:Extensions
lPDF := .t.
exit
endif
next
endif
endifreturn lPDF
//--------------------------------------------------------------------//
function RPrevUserBtns( bNewUserBtns, nBarStyle, aSize )
local bPrev := bUserBtns
if PCount() > 0
bUserBtns := bNewUserBtns
if PCount() > 1
if nBarStyle == nil
nStyle := nil
elseif ValType( nBarStyle ) == 'L' .and. nBarStyle == .t.
nStyle := 2007
elseif ValType( nBarStyle ) == 'N' .and. AScan( { 97, 2007, 2010 }, nBarStyle ) > 0
nStyle := nBarStyle
endif
if PCount() > 2
if ValType( aSize ) == 'A' .and. Len( aSize ) >= 2
nBtnW := aSize[ 1 ]
nBtnH := aSize[ 2 ]
endif
endif
endif
endifreturn bPrev
//--------------------------------------------------------------------//
att: Carlos FWH1404 XHARBOUT123, DBF XDEV -
ola pessoal alguem sabe como eu altero esta fonte do preview
-
oi bom dia
vc pode anexar esta rpreview,eu testar
muito obrigado
carlos
syspel
-
caro amigo vc vai ter que escrever mesmo sem dlll e um sistema muito complexo
carlos
syspel
-
alguem sabe como alterar a fonte do preview,mostra destorcido na tela mais imprime corretamente
eu osu a classe utilprn
obrigado
fwh 14.04 xarbour 1.2.3 bcc582 xdev
carlos
-
ok obrigado ja achei o erro to ficando usado
brigado capi
-
nesta linha tem uma dialog com btnbmp ok e btnbmp xcancela
-
bom dia pessoal
estou com um erro assim,crie um funcao para ver uma data quando eu coloco dentro do sistema a funcao executa
perfeita,mas na ora de sai eu clico no butom cancela ai da esse erro
Application===========Path and name: C:\new\fpm.exe (32 bits)Size: 9,232,896 bytesCompiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20130903)FiveWin Version: FWHX 14.04Windows version: 5.1, Build 2600 Service Pack 3Time from start: 0 hours 0 mins 27 secsError occurred at: 13/07/2016, 10:22:55Error description: Error BASE/1081 Erro nos parƒmetros: +Args:[ 1] = C fpa001[ 2] = N 1Stack Calls===========Called from: fpaltrec.prg => ALT_EVENT( 38 )Called from: fpmenu.prg => (b)FPM02( 175 )Called from: btnbmp.prg => TBTNBMP:CLICK( 464 )Called from: btnbmp.prg => TBTNBMP:LBUTTONUP( 660 )Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1723 )Called from: btnbmp.prg => TBTNBMP:HANDLEEVENT( 1417 )Called from: window.prg => _FWH( 3236 )Called from: => WINRUN( 0 )Called from: window.prg => TWINDOW:ACTIVATE( 1003 )Called from: fpmenu.prg => FPM02( 215 )System======CPU type: Intel® Core2 Duo CPU E7300 @ 2.66GHz 2666 MhzHardware memory: 2038 megsFree System resources: 90 %GDI resources: 90 %User resources: 90 %Windows total applications running: 81 , C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e652022 , C:\WINDOWS\system32\SHELL32.dll3 , C:\WINDOWS\system32\SHLWAPI.dll4 , C:\new\fpm.exe5 , C:\new\freeimage.dll6 M, C:\WINDOWS\system32\msctfime.ime7 MCI command handling window, C:\WINDOWS\system32\WINMM.DLL8 TF_FloatingLangBar_WndTitle,Variables in use================Procedure Type Value==========================ALT_EVENTLocal 1: ULocal 2: C "fpa001"Local 3: N 1Local 4: ULocal 5: L .F.(b)FPM02Param 1: O Class: TBTNBMPTBTNBMP:CLICKLocal 1: O Class: TBTNBMPTBTNBMP:LBUTTONUPParam 1: N 31Param 2: N 39Param 3: O Class: TBTNBMPLocal 1: ULocal 2: L .T.TCONTROL:HANDLEEVENTParam 1: N 514Param 2: N 0Param 3: N 2031655Local 1: O Class: TBTNBMPLocal 2: UTBTNBMP:HANDLEEVENTParam 1: N 514Param 2: N 0Param 3: N 2031655Local 1: O Class: TBTNBMP_FWHParam 1: N 2031655Param 2: N 514Param 3: N 0Param 4: N 2031655Param 5: N 7Local 1: O Class: TBTNBMPWINRUNParam 1: N 655602TWINDOW:ACTIVATEParam 1: C "MAXIMIZED"Param 2: UParam 3: UParam 4: UParam 5: UParam 6: UParam 7: UParam 8: B {|| ... }Param 9: UParam 10: UParam 11: UParam 12: UParam 13: UParam 14: UParam 15: UParam 16: UParam 17: UParam 18: UParam 19: ULocal 1: O Class: TWINDOWLocal 2: ULocal 3: UFPM02Local 1: ULocal 2: O Class: TICONLocal 3: ULocal 4: ULocal 5: O Class: TCURSORLocal 6: ULocal 7: ULocal 8: O Class: TBRUSHLinked RDDs===========DBFDBFFPTDBFBLOBDBFCDXDBFNTXDataBases in use================Classes in use:===============1 ERROR2 HASHENTRY3 HBCLASS4 HBOBJECT5 TBRUSH6 TCURSOR7 TWINDOW8 TCONTROL9 TICON10 TFONT11 TMENU12 TMENUITEM13 TBAR14 TRECT15 TBTNBMP16 TBITMAP17 TIMAGE18 TMSGBAR19 TMSGITEM20 TTIMER21 TSTRUCT22 TDIALOG23 TSAY24 TGET25 GET26 TWBROWSE27 TSCROLLBAR28 TREG32Memory Analysis===============2159 Static variablesDynamic memory consume:Actual Value: 0 bytesHighest Value: 0 bytesai eu tira a funcao e funciona normal corretamenteesta e funcao que eu crieifunction vfvencida** avisa se o funcionario tem ferias a vencer****select &arq1data1=ctod(" / / ")data2=ctod(" / / ")data3=ctod(" / / ")data4=ctod(" / / ")este=0vano=0tano=0vano=year(mdata) - year(&arq1->dt_admiss)tano=(vano-&arq1->ferias)if vano<=0 .and. ! year(mdata)=year(&arq1->dt_admiss)data1=mdatadata2=mdata + 365este=9tano=0endifif tano=0 .and. year(mdata)=year(&arq1->dt_admiss)data1=mdatadata2=mdata + 365este=9tano=0endifif tano > 0cha1= tano * 365data3=mdata - cha1data1=data3data2=data3 + 365endifif este=9tano=1endifFor x=1 to tanosz=dtoc(&arq1->dt_admiss)sa=substr(sz,1,6)az=strzero(year(data1),4)ax=strzero(year(data2),4)xx=sa+subs(az,3,2)aa=sa+subs(ax,3,2)// xss=ctod(aa)+365// xss=xss-30vdata1=ctod(xx)vdata2=ctod(aa)-1data1= data2data2= data2 + 365NextFCheca:=ctod(" / / ")fcheca:=vdata2if year(Fcheca)=year(mdata)if month(Fcheca)=month(mdata)msgstop("As ferias deste Funcionario"+chr(13)+;"Vence este mes "+dtoc(Fcheca),"Aviso")endifendif**********************************************************select &arq5return .t.deste ja obrigadocarlosfwh 14.04 xharbour 1.2.3 dbf ,xdev -
-
vou testar, obrigado
carlos
-
ola pessoal
eu nunca usei array,preciso de fazer um funcao assim
ler do banco de dados para um array,com 5 variaveis como codigo,nome endereco,cep bairro depois
de lido gravar isto dentro de um outro arquivo alguem tem uma ideia como ler e gravar isto
obrigado
fwh 14.02 xharbour 123 dbf xdev
carlos
-
-
oi pessoal boa tarde
olha o exemplo abaixo
a=1000.00
b=200.00
c=-100.00
if a > 0
que e,ai ele mente ele diz que nao e
endif
if b=0.00
dele diz que .f.
endif
d= a-b
if d > 0
ele fala que e .f.
endif
o program esta com 9000 mil linhas
sera e porque o programa e muito grande ?
a unica forma que achei para dar certo foi fazendo assim com exemplo abaixo
if ltrim(str(d,12,2)) > "0.00"
babababa
endif
e estranho porque e fator matematico,
estou usando 2 casas decimais
isto e erro xharbour ?
obrigado a todos
carlos
fwh13.02 xharbour 123 dbf xdev
-
ola pessoal bom dia
o pepino e o seguinte
fator de calculo a,b
a= 3000.00
b=igual a soma
soma de b
b=1000.00 primeira vez
b=1000.00 segunda
b=1000.00 terceira
vc fiz um if na programacao para verificar se o valor de b e > que o valor a
ele diz que sim e na verdade sao iguais
isto na programacao foi com um get, clipper ele responde corretamento com blinker,exospace
mais xbarbour ele mente;. e bug do xharbour
obrigado carlos
fwh 13.02 xharbour 1.2.3 dbf ,xdev
-
ok
obrigado consegui fazer ,mais ou menos a ideia que vcs me prostou
obrigado so tem feras ai
carlos
-
ok vc estao enteu a ideia ?
setclipboard ate funciona aquele exemplo so tem que dar ctrl z e so funciona com cnpj !
vc sabe onde achar a funcao do kapiaba
carlos
obrigado
-
descupe.estou bastente atarefado
http://www8.receita.fazenda.gov.br/SimplesNacional/controleacesso/autentica.aspx?id=5
Fwh13.02 xharbour 1.23 dbf,xdev
obrigado
carlos
REGISTRANDO NFE_UTIL_2G NO WINDOWS 8 E 10
in Programação
Posted
vc precisa configurar as premissoes do win 7,8,10 para que ele posa gravar
geralmente se grava no c:\