Jump to content
Fivewin Brasil

syspel

Membros
  • Posts

    511
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by syspel

  1. vc precisa configurar as premissoes do win 7,8,10 para que ele posa gravar geralmente se grava no c:\
  2. obrigado vou tester e depois te informo ailton
  3. 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
  4. 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
  5. 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
  6. 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
  7. syspel

    RPREVIEW

    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
  8. syspel

    RPREVIEW

    nao tem anexar a imagem da erro neste tocho ? obrigado
  9. syspel

    RPREVIEW

    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 cPageNum DATA hOldRes, hNewRes DATA oLvw, oImageListPages CLASSDATA cResFile CLASSDATA oWndMain CLASSDATA bPrint, bExportToWord, bSaveAsWord, bSaveAsPDF, bEmail CLASSDATA 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 endif ACTIVATE 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 endif return nil //----------------------------------------------------------------------------// METHOD BuildButtonBar() CLASS TPreview local oImageList, oReBar, oBar, oHand, uRet, oBtn DEFINE CURSOR ::oHand HAND if lRebar DEFINE IMAGELIST oImageList SIZE 16, 16 oImageList: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 = oImageList oReBar = 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 ::CanExportToExcel DEFINE 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 only DEFINE 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 ) endif if ! ( 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 ::CanExportToWord oBtn:hBitmap1 = FWBitmap( "Word2" ) DEFINE BUTTON oBtn OF oBar ; MESSAGE FWString( "Export to Excel" ) ; ACTION ::ExportToMSExcel() ; TOOLTIP FWString( "Export to Excel" ) ; WHEN ::CanExportToExcel oBtn: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 := 7 if Len( ::oDevice:aMeta ) < 1 return nil endif DEFAULT ::oWndMain := WndMain() ::hNewRes := GetResources() if ! File( ::cResFile ) #ifdef __CLIPPER__ ::cResFile := "Preview.dll" #else if ! IsWin64() ::cResFile := "Prev32.dll" else ::cResFile = "Prev64.dll" endif #endif endif if SetResources( ::cResFile ) < 32 MsgStop( ::cResFile + " not found, imposible to continue",; "FiveWin Printing Error" ) return nil endif if ::oDevice != nil cTitle = ::oDevice:cDocument endif if ::oWndMain != nil oIcon = ::oWndMain:oIcon else DEFINE ICON oIcon RESOURCE "Print" endif DEFINE 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 endif if 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. endif if 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 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( 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" ) ENDMENU MENUITEM 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 ENDMENU SEPARATOR 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 ) ) endif if nStyle < 2010 .and. ( o := ::oWndMain:oMsgBar ) != nil nStyle := Max( nStyle, If( o:l2010, 2010, If( o:l2007, 2007, 0 ) ) ) endif if 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 endif lRebar := ( 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, nGutter if ::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.05 nAspect := ::oDevice:nHorzSize() / ::oDevice:nVertSize() nMetaWidth := If( ::lZoom, nMaxWidth, oRect:nHeight * nAspect ) nHeight := oRect:nHeight if nMetaWidth > nMaxWidth nMetaWidth := nMaxWidth nHeight := nMetaWidth / nAspect endif if ::lTwoPages oRect1 := OClone( oRect ) WITH OBJECT oRect1 :nTop += ( oRect:nHeight - nHeight ) / 2 :nLeft := oRect:nLeft + oRect:nWidth / 2 - nMetaWidth - nGutter :nWidth := nMetaWidth :nHeight := nHeight END oRect2 := OClone( oRect1 ) WITH OBJECT oRect2 :nLeft := oRect:nLeft + oRect:nWidth / 2 + nGutter :nWidth := nMetaWidth END if ::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 endif if ::oDevice:nHorzSize() >= ; // Apaisado // DEVICE ::oDevice:nVertSize() // DEVICE ::lTwoPages := ! ::lTwoPages MsgBeep() return nil endif if ::lZoom ::Zoom( .T. ) endif if ! 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" ) ) endif if ::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" ) ) endif if ::oWnd:oMenu != nil ::oMenuTwoPages:Enable() ::oMenuOnePage:Disable() endif if ! ::lListViewHide ::oLvw:Show() endif endif 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 endif if ::lZoom if ::lTwoPages ::TwoPages( .T. ) endif if ! 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" ) ) endif if ::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" ) ) endif if ::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 endif nYfactor := Int( ::oDevice:nVertRes() / ::oWnd:oVScroll:nMax ) // DEVICE if nSteps != nil nStep := nSteps elseif lPage nStep := ::oWnd:oVScroll:nMax / 10 else nStep := 1 endif if nType == GO_UP nStep := -nStep elseif nType == GO_POS ::oWnd:oVscroll:SetPos( nSteps ) nStep := 0 endif nYorig := nYfactor * ( ::oWnd:oVScroll:GetPos() + nStep - 1 ) if nYorig > ::oDevice:nVertRes() // DEVICE nYorig := ::oDevice:nVertRes() // DEVICE endif if 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 endif nXfactor := Int( ::oDevice:nHorzRes() / ::oWnd:oHScroll:nMax ) // DEVICE if nSteps != nil nStep := nSteps elseif lPage nStep := ::oWnd:oHScroll:nMax/10 else nStep := 1 endif if nType == GO_LEFT nStep := -nStep elseif nType == GO_POS ::oWnd:oHscroll:SetPos( nSteps ) nStep := 0 endif nXorig := nXfactor * ( ::oWnd:oHScroll:GetPos() + nStep - 1 ) if nXorig > ::oDevice:nHorzRes() // DEVICE nXorig := ::oDevice:nHorzRes() // DEVICE endif if 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, nXOrg if ::lZoom ::Zoom( .T. ) return nil endif oCoors := ::oMeta1:GetRect() nWidth := oCoors:nRight - oCoors:nLeft + 1 nHeight := oCoors:nBottom - oCoors:nTop + 1 if .f. nXStep := Max( Int( nX / nWidth * HSCROLL_RANGE ) - 9, 0 ) nXFactor := Int( ::oDevice:nHorzRes() / HSCROLL_RANGE ) // DEVICE endif if .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 ) endif if ! Empty( nYStep ) ::VScroll( 2,, nyStep ) ::oWnd:oVScroll:SetPos( nyStep ) endif return nil //----------------------------------------------------------------------------// METHOD SetOrg2( nX, nY ) CLASS TPreview local oCoors local aFiles local nXStep, nYStep, nXFactor, nYFactor,; nWidth, nHeight, nXOrg if ::oMeta2:cCaption == "" return nil endif if ::lZoom ::Zoom( .T. ) return nil endif oCoors := ::oMeta2:GetRect() nWidth := oCoors:nRight - oCoors:nLeft + 1 nHeight := oCoors:nBottom - oCoors:nTop + 1 if .f. nXStep := Max( Int( nX / nWidth * HSCROLL_RANGE ) - 9, 0 ) nXFactor := Int( ::oDevice:nHorzRes() / HSCROLL_RANGE ) endif if .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 ] ) endif if nStyle < 2007 ::oPage:Refresh() endif ::oBar:Refresh() ::Zoom( .T. ) if ! Empty( nXStep ) ::HScroll( 2,, nxStep ) ::oWnd:oHScroll:SetPos( nxStep ) endif if ! Empty( nYStep ) ::VScroll( 2,, nyStep ) ::oWnd:oVScroll:SetPos( nyStep ) endif return 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() endif case 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 endif return 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 endif return 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 = cPrinter SysRefresh() 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. endif if ::oWnd:oMenu != nil AEval( ::aFactor, { | val, elem | val:SetCheck( elem == nValue ) } ) endif ::oMeta1:SetZoomFactor( ::nZFactor, ::nZFactor * 2 ) if ! ::lZoom .and. ! lInit ::Zoom( .T. ) endif if ::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. ) } ) } ) ENDMENU return 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 := Self if nLast == 1 ::PrintPrv( nil, nOption, nFirst, nLast ) return nil endif DEFINE 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() PIXEL ACTIVATE 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 nFor CursorWait() 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 ) next case 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 ) next endcase EndDoc( oDevice:hDC ) CursorArrow() if oDlg != nil oDlg:End() endif return nil //----------------------------------------------------------------------------// METHOD ExportToMSWord() CLASS TPreview local oDoc if ValType( ::bExportToWord ) == 'B' return Eval( ::bExportToWord, Self ) endif oDoc = ConvertToWordDoc( Self ) if oDoc != nil oDoc:Application:Visible := .t. endif return 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" ) ENDMENU return 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() ) endif return nil //----------------------------------------------------------------------------// METHOD SaveAs( lPDF, cFile, lView ) CLASS TPreview static lWordPDF := .t. local oWord, nVer, oDoc local cExt, cMsg if 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 endif oWord := 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 endif if !( Lower( cFileExt( cFile ) ) $ cExt ) cFile = cFilePath( cFile ) + cFileNoExt( cFile ) + ; If( lPDF, ".pdf", If( nVer < 12.0, ".doc", ".docx" ) ) endif DEFAULT 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 endif return 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 USER ACTIVATE 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, cEMF if 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" ) ) endif return 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, oCursor DEFAULT cFileType := "W" // ByDefault Word File DEFAULT aFiles := oPreview:oDevice:aMeta if Len( aFiles ) == 0 MsgAlert( FWString( "There is no output for export" ), FWString( "Alert" ) ) Return nil Endif if ( 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:= aProp oStyle = 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 = nPageHeight i = 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. endif oGraphic = 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 endif if ! ( 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 100 aProp = {} 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 = nil return 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 endif return 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 endif return 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 endif return bPrev //--------------------------------------------------------------------// att: Carlos FWH1404 XHARBOUT123, DBF XDEV
  10. syspel

    preview

    ola pessoal alguem sabe como eu altero esta fonte do preview
  11. syspel

    preview

    oi bom dia vc pode anexar esta rpreview,eu testar muito obrigado carlos syspel
  12. syspel

    E-Social

    caro amigo vc vai ter que escrever mesmo sem dlll e um sistema muito complexo carlos syspel
  13. syspel

    preview

    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
  14. ok obrigado ja achei o erro to ficando usado brigado capi
  15. nesta linha tem uma dialog com btnbmp ok e btnbmp xcancela
  16. 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 bytes Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20130903) FiveWin Version: FWHX 14.04 Windows version: 5.1, Build 2600 Service Pack 3 Time from start: 0 hours 0 mins 27 secs Error occurred at: 13/07/2016, 10:22:55 Error description: Error BASE/1081 Erro nos parƒmetros: + Args: [ 1] = C fpa001 [ 2] = N 1 Stack 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 Mhz Hardware memory: 2038 megs Free System resources: 90 % GDI resources: 90 % User resources: 90 % Windows total applications running: 8 1 , C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202 2 , C:\WINDOWS\system32\SHELL32.dll 3 , C:\WINDOWS\system32\SHLWAPI.dll 4 , C:\new\fpm.exe 5 , C:\new\freeimage.dll 6 M, C:\WINDOWS\system32\msctfime.ime 7 MCI command handling window, C:\WINDOWS\system32\WINMM.DLL 8 TF_FloatingLangBar_WndTitle, Variables in use ================ Procedure Type Value ========================== ALT_EVENT Local 1: U Local 2: C "fpa001" Local 3: N 1 Local 4: U Local 5: L .F. (b)FPM02 Param 1: O Class: TBTNBMP TBTNBMP:CLICK Local 1: O Class: TBTNBMP TBTNBMP:LBUTTONUP Param 1: N 31 Param 2: N 39 Param 3: O Class: TBTNBMP Local 1: U Local 2: L .T. TCONTROL:HANDLEEVENT Param 1: N 514 Param 2: N 0 Param 3: N 2031655 Local 1: O Class: TBTNBMP Local 2: U TBTNBMP:HANDLEEVENT Param 1: N 514 Param 2: N 0 Param 3: N 2031655 Local 1: O Class: TBTNBMP _FWH Param 1: N 2031655 Param 2: N 514 Param 3: N 0 Param 4: N 2031655 Param 5: N 7 Local 1: O Class: TBTNBMP WINRUN Param 1: N 655602 TWINDOW:ACTIVATE Param 1: C "MAXIMIZED" Param 2: U Param 3: U Param 4: U Param 5: U Param 6: U Param 7: U Param 8: B {|| ... } Param 9: U Param 10: U Param 11: U Param 12: U Param 13: U Param 14: U Param 15: U Param 16: U Param 17: U Param 18: U Param 19: U Local 1: O Class: TWINDOW Local 2: U Local 3: U FPM02 Local 1: U Local 2: O Class: TICON Local 3: U Local 4: U Local 5: O Class: TCURSOR Local 6: U Local 7: U Local 8: O Class: TBRUSH Linked RDDs =========== DBF DBFFPT DBFBLOB DBFCDX DBFNTX DataBases in use ================ Classes in use: =============== 1 ERROR 2 HASHENTRY 3 HBCLASS 4 HBOBJECT 5 TBRUSH 6 TCURSOR 7 TWINDOW 8 TCONTROL 9 TICON 10 TFONT 11 TMENU 12 TMENUITEM 13 TBAR 14 TRECT 15 TBTNBMP 16 TBITMAP 17 TIMAGE 18 TMSGBAR 19 TMSGITEM 20 TTIMER 21 TSTRUCT 22 TDIALOG 23 TSAY 24 TGET 25 GET 26 TWBROWSE 27 TSCROLLBAR 28 TREG32 Memory Analysis =============== 2159 Static variables Dynamic memory consume: Actual Value: 0 bytes Highest Value: 0 bytes ai eu tira a funcao e funciona normal corretamente esta e funcao que eu criei function vfvencida ** avisa se o funcionario tem ferias a vencer ** ** select &arq1 data1=ctod(" / / ") data2=ctod(" / / ") data3=ctod(" / / ") data4=ctod(" / / ") este=0 vano=0 tano=0 vano=year(mdata) - year(&arq1->dt_admiss) tano=(vano-&arq1->ferias) if vano<=0 .and. ! year(mdata)=year(&arq1->dt_admiss) data1=mdata data2=mdata + 365 este=9 tano=0 endif if tano=0 .and. year(mdata)=year(&arq1->dt_admiss) data1=mdata data2=mdata + 365 este=9 tano=0 endif if tano > 0 cha1= tano * 365 data3=mdata - cha1 data1=data3 data2=data3 + 365 endif if este=9 tano=1 endif For x=1 to tano sz=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-30 vdata1=ctod(xx) vdata2=ctod(aa)-1 data1= data2 data2= data2 + 365 Next FCheca:=ctod(" / / ") fcheca:=vdata2 if year(Fcheca)=year(mdata) if month(Fcheca)=month(mdata) msgstop("As ferias deste Funcionario"+chr(13)+; "Vence este mes "+dtoc(Fcheca),"Aviso") endif endif ********************************************************** select &arq5 return .t. deste ja obrigado carlos fwh 14.04 xharbour 1.2.3 dbf ,xdev
  17. syspel

    ref array

    deu certinho muito obrigado carlos
  18. syspel

    ref array

    vou testar, obrigado carlos
  19. syspel

    ref array

    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
  20. ok obrigado a todos carlos
  21. 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
  22. 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
  23. ok obrigado consegui fazer ,mais ou menos a ideia que vcs me prostou obrigado so tem feras ai carlos
  24. 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
  25. 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
×
×
  • Create New...