TPRINTER como configurar los margenes?

Post Reply
leondefrancia
Posts: 33
Joined: Tue Jun 08, 2010 3:34 pm
Location: Rosario, Santa Fe. Argentina

TPRINTER como configurar los margenes?

Post by leondefrancia »

No encuentro documentación acerca de como configurar los margenes en tprinter, alguien me podría ayudar a hacerlo?, necesito que el área imprimible comience más abajo.

Desde ya muchas gracias.
Libreria: FWH/FWHX 9.11 25/November/2009
Harbour: Harbour 2.0.0 Beta2
Compilador: Borland C++ 5.5.1 versión 32 bits
Editor de Recursos: UEstudio 10.0
Gestor de B.D: A.D.A ( Advantage Data Architect )
S.O: Windows XP
User avatar
karinha
Posts: 7944
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: TPRINTER como configurar los margenes?

Post by karinha »

Mira si ayuda:

Code: Select all | Expand

#Define PAD_LEFT            0#Define PAD_RIGHT           1#Define PAD_CENTER          2STATIC FUNCTION IMPRIMIR_CAIXA( DbPedidos,  DbPedAnual, cDataInicial, ;                                cDataFinal, aGet, DeOndeParte )    LOCAL cAlias, oImagem, gcFile    LOCAL ResColuna, ResLinha    LOCAL oPrn,        oFont,       oFontLogo,   oFontDivi,   oFontList,     ;          oFontCurs,   oPen1,       oPen2,       oPen3,       oFontSubl    LOCAL nLinha, nColuna // Linha e coluna da Descicao    LOCAL nDinheiro,    nCheque,     nChequePre,  nTickets,    nCartaoCred,;          nCartaoDebi,  nContraVale, nPagina,     nTotalGeral, xDataLista    MEMVAR XCAIXAINI, XCAIXAFIN, XOPERAINI, XOPERAFIN    PUBLIC XNOMEEMP, XCIDDIR    XDATALISTA  := ALLTRIM(XCIDDIR)+ ", "        + ;                   LTRIM( STR( DAY( DATE() ) ) ) + ;                   " de "                        + ;                   OemToAnsi(CMONTH( DATE() ))   + ;                   " de "                        + ;                   STR( YEAR( DATE() ) )         + ;                   "."    // VariAveis Para Achar os Valores Que o Cliente Pagou    nDinheiro   := 0.00    nCheque     := 0.00    nChequePre  := 0.00    nTickets    := 0.00    nCartaoCred := 0.00    nCartaoDebi := 0.00    nContraVale := 0.00    nTotalGeral := 0.00    //oImagem:Progress( .f. )    //-> Logo do Relatorio    //LFN2SFN( gcFile := "SEMFOTO.JPG" )    //oImagem:LoadBMP( gcFile )    cAlias := ALIAS()  // DbPedidos    //-> Mostra o Relatorio... Preview do Fluxo do Caixa    PRINT oPrn NAME "Fluxo do Caixa Discriminado" PREVIEW MODAL        IF EMPTY( oPrn:hDC )           RETURN NIL          // Printer was not installed or ready        ENDIF        DEFINE FONT oFont     NAME "Courier New" SIZE 0, -8 OF oPrn        DEFINE FONT oFontDivi NAME "Courier New" SIZE 0, -12 BOLD OF oPrn        DEFINE FONT oFontCurs NAME "Courier New" SIZE 0, -14 BOLD OF oPrn        DEFINE FONT oFontSubl NAME "Courier New" SIZE 0, -16 BOLD UnderLine OF oPrn        //-> Problemas com o Windows XP - Formato da FONTE Nao Reconhecido        IF IsWinNT() .OR. IsWin2000()  // Para Windows XP/NT e 2000 / 2003           DEFINE FONT oFontLogo NAME "Courier New" SIZE 0, -16 BOLD OF oPrn           DEFINE FONT oFontList NAME "Courier New" SIZE 0, -20 BOLD OF oPrn        ELSE //-> 95/98/ME           DEFINE FONT oFontLogo NAME "Courier New" SIZE 0, -20 BOLD OF oPrn           DEFINE FONT oFontList NAME "Courier New" SIZE 0, -22 BOLD OF oPrn        ENDIF        //-> Caneta do Preview        DEFINE PEN oPen1 WIDTH 4 COLOR CLR_BROWN OF oPrn        DEFINE PEN oPen2 WIDTH 2 COLOR CLR_BROWN OF oPrn        DEFINE PEN oPen3 WIDTH 5 COLOR CLR_BLACK OF oPrn         oPrn:SetPage(9)     //-> A4 //9        oPrn:SetPortrait()  //-> Vertical(Retrato)        //oPrn:SetLandscape() //-> Horizontal        //- Como Imprimir em Centimetros sem errar e em qualquer Impressora        ResLinha  := oPrn:nVertRes()   /   40        ResLinha  := oPrn:nLogPixely() / 2.54        ResColuna := oPrn:nLogPixelx() / 2.54        nPagina := 1        PAGE            //oPrn:SayImage( 0, 0, oImagem )            //oPrn:SayBitmap( 0, 0, "c:\fwh\bitmaps\fivewin.bmp" )            nLinha  :=  0.50            nColuna := 10.00            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                      XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER )            nLinha  += 0.50            nColuna := 1.00            //-> Data de Hoje            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                      OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ;                      CLR_BLACK,, PAD_LEFT )            nColuna := 10.00            //-> Cabe‡alho            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,        ;                      "FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,,    ;                      CLR_BLACK,, PAD_CENTER )            nColuna := 17.50            //-> Pagina            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,               ;                      OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ;                      CLR_BLACK,, PAD_CENTER )            nLinha  +=  0.50            nColuna := 10.00            IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,             ;                         OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) +   ;                                    "  -  "                              +   ;                                    "Caixa Final..: " + STR( XCAIXAFIN ) ),  ;                         oFont,, CLR_BLACK,, PAD_CENTER )            ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,             ;                         OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) +   ;                                    "  -  "                              +   ;                                    "Operador Final..: " + ( XOPERAFIN ) ),  ;                         oFont,, CLR_BLACK,, PAD_CENTER )            ENDIF            nLinha  += 0.50            nColuna := 1.00            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                      REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )            nLinha += 0.30  //-> Pula a Linha            //-> Cabecalho            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,  ;                      OemToAnsi( "CàDIGO PROD  " + SPACE(12) + ;                                 "DESCRI€ÇO    " + SPACE(10) + ;                                 "VL. UNITµRIO " + SPACE(08) + ;                                 "QTDE VENDIDA " + SPACE(10) + ;                                 "TOTAL ÖTEM   " ), oFont,, CLR_BLACK,, PAD_LEFT )            nLinha += 0.30  //-> Pula a Linha            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                      REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )            nLinha += 0.30            //-> Vou imprimir os produtos            WHILE ( .NOT. EOF() )                SYSREFRESH()                IF EOF()                   EXIT                ENDIF                IF nLinha >= 27   // Nova Pagina = 54 Linhas                   ENDPAGE // Fecho a Pagina Anterior, Para Nao Quebrar o Metafile                   PAGE    // Nova Pagina - Abro uma nova pagina                   nPagina := nPagina + 1                   nLinha  :=  0.50                   nColuna := 10.00                   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                             XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER )                   nLinha  += 0.50                   nColuna := 1.00                   //-> Data de Hoje                   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                             OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ;                             CLR_BLACK,, PAD_LEFT )                   nColuna := 10.00                   //-> Cabecalho                   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,        ;                             "FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,,    ;                             CLR_BLACK,, PAD_CENTER )                   nColuna := 17.50                   //-> Pagina                   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,           ;                             OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ;                             CLR_BLACK,, PAD_CENTER )                   nLinha  +=  0.50                   nColuna := 10.00                   IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0                      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,             ;                                OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) +   ;                                           "  -  "                              +   ;                                           "Caixa Final..: " + STR( XCAIXAFIN ) ),  ;                                oFont,, CLR_BLACK,, PAD_CENTER )                   ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0                      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,             ;                                OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) +   ;                                           "  -  "                              +   ;                                           "Operador Final..: " + ( XOPERAFIN ) ),  ;                                oFont,, CLR_BLACK,, PAD_CENTER )                   ENDIF                   nLinha  += 0.50                   nColuna := 1.00                   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                             REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )                   nLinha += 0.30  //-> Pula a Linha                   //-> Cabecalho                   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,  ;                             OemToAnsi( "CàDIGO PROD  " + SPACE(12) + ;                                        "DESCRI€ÇO    " + SPACE(11) + ;                                        "VL. UNITµRIO " + SPACE(08) + ;                                        "QTDE VENDIDA " + SPACE(10) + ;                                        "TOTAL ÖTEM   " ), oFont,, CLR_BLACK,, PAD_LEFT )                   nLinha += 0.30  //-> Pula a Linha                   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                             REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )                   nLinha += 0.30                ENDIF                nColuna := 1.00                //-> Codigo do Produto                oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                        ( cAlias )->CODIGO, oFont,, CLR_BLACK,, PAD_LEFT )                nColuna := 3.50                //-> Nome do Produto                oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,     ;                          SUBSTR(( cAlias )->DESCRICAO,1,30), oFont,, ;                          CLR_BLACK,, PAD_LEFT )                nColuna := 9.00                oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,     ;                          TRANSF((( cAlias )->VLUNITARIO), "@E 999,999,999,999.99" ), oFont,, ;                          CLR_BLACK,, PAD_LEFT )                nColuna := 12.50                oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,     ;                          TRANSF((( cAlias )->QTD_VENDEU), "999999999999.99" ), oFont,, ;                          CLR_BLACK,, PAD_LEFT )                nColuna := 15.50                oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,     ;                          TRANSF((( cAlias )->TOTITEM), "@E 999,999,999,999.99" ), oFont,, ;                          CLR_BLACK,, PAD_LEFT )                nColuna := 1.00                nLinha += 0.30  //-> Pula a Linha                oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                          REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )                nDinheiro   := nDinheiro   + ( cAlias )->DINHEIRO - ;                                             ( cAlias )->TROCOCLIEN                nCheque     := nCheque     + ( cAlias )->CHEQUE                nChequePre  := nChequePre  + ( cAlias )->CHEQUEPRE                nTickets    := nTickets    + ( cAlias )->TICKETS                nCartaoCred := nCartaoCred + ( cAlias )->CARTAOCRED                nCartaoDebi := nCartaoDebi + ( cAlias )->CARTAODEBI                nContraVale := nContraVale + ( cAlias )->CONTRAVALE                nTotalGeral := nTotalGeral + ( cAlias )->TOTPEDIDO                /*                VENDAPRAZO                CREDCARD                */                SKIP  // Proximo Produto                nLinha += 0.50  //-> Pula a Linha Para o Proximo Produto            ENDDO            IF nLinha >= 27   // Nova Pagina = 54 Linhas               ENDPAGE // Fecho a Pagina Anterior, Para Nao Quebrar o Metafile               PAGE    // Nova Pagina - Abro uma nova pagina               nPagina := nPagina + 1               nLinha  :=  0.50               nColuna := 10.00               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                         XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER )               nLinha  += 0.50               nColuna := 1.00               //-> Data de Hoje               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                         OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nColuna := 10.00               //-> Cabecalho               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,        ;                         "FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,,    ;                         CLR_BLACK,, PAD_CENTER )               nColuna := 17.50               //-> Pagina               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,           ;                         OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ;                         CLR_BLACK,, PAD_CENTER )               nLinha  +=  0.50               nColuna := 10.00               IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0                  oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,             ;                            OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) +   ;                                       "  -  "                              +   ;                                       "Caixa Final..: " + STR( XCAIXAFIN ) ),  ;                            oFont,, CLR_BLACK,, PAD_CENTER )               ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0                  oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,             ;                            OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) +   ;                                       "  -  "                              +   ;                                       "Operador Final..: " + ( XOPERAFIN ) ),  ;                            oFont,, CLR_BLACK,, PAD_CENTER )               ENDIF               nLinha  += 0.50               nColuna := 1.00               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                         REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )               nLinha += 0.30  //-> Pula a Linha            ENDIF            nColuna := 1.00            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,        ;                      "TOTAL GERAL: ", oFontDivi,,                   ;                      CLR_BLACK,, PAD_LEFT )            nColuna := 14.00            //-> Total Geral            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                 ;                      TRANSF( nTotalGeral, "@E 999,999,999,999.99" ), oFontDivi,, ;                      CLR_BLACK,, PAD_LEFT )            nLinha  += 0.50            nColuna := 1.00            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;                      REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )            nLinha += 0.50            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,        ;                      "RESUMO GERAL: ", oFont,,                      ;                      CLR_BLACK,, PAD_LEFT )            nLinha += 0.50            nColuna := 1.00            IF nDinheiro    > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,       ;                         "EM DINHEIRO..: " +                           ;                         TRANSF( nDinheiro, "@E 999,999.99" ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nLinha += 0.30            ENDIF            IF nCheque      > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,     ;                         "EM CHEQUE....: " +                         ;                         TRANSF( nCheque, "@E 999,999.99" ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nLinha += 0.30            ENDIF            IF nChequePre   > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,        ;                         "EM CHEQUE PRE: " +                            ;                         TRANSF( nChequePre, "@E 999,999.99" ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nLinha += 0.30            ENDIF            IF nTickets     > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,      ;                         "EM TICKETS...: " +                          ;                         TRANSF( nTickets, "@E 999,999.99" ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nLinha += 0.30            ENDIF            IF nCartaoCred  > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                         "EM C. CREDITO: " +                             ;                         TRANSF( nCartaoCred, "@E 999,999.99" ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nLinha += 0.30            ENDIF            IF nCartaoDebi  > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                         "EM C. DEBITO.: " +                             ;                         TRANSF( nCartaoDebi, "@E 999,999.99" ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nLinha += 0.30            ENDIF            IF nContraVale  > 0               oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,         ;                         "EM C. VALE...: " +                             ;                         TRANSF( nContraVale, "@E 999,999.99" ), oFont,, ;                         CLR_BLACK,, PAD_LEFT )               nLinha += 0.30            ENDIF            nLinha  +=  0.50            nColuna := 14.00            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,            ;                      "" + XDATALISTA,                                   ;                      oFont,, CLR_BLACK,, PAD_CENTER )            nLinha  ++            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,            ;                      "________________________________"+                ;                      "__________",                                      ;                      oFont,, CLR_BLACK,, PAD_CENTER )            nLinha += 0.30        ENDPAGE    ENDPRINT    oFont:End()    oFontLogo:End()    oFontDivi:End()    oFontList:End()    oFontCurs:End()    oFontSubl:End()    oPen1:End()    oPen2:End()    oPen3:End()RETURN NIL 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
leondefrancia
Posts: 33
Joined: Tue Jun 08, 2010 3:34 pm
Location: Rosario, Santa Fe. Argentina

Re: TPRINTER como configurar los margenes?

Post by leondefrancia »

Gracias Karinha por la respuesta, te cuento lo que me sucede, estoy migrando la impresión del sistema de TDosPrn a TPrinter y necesito que cada reporte coincida exactamente con los anteriores, entonces un listado no es problema pero los comprobantes donde el membrete debe coincidir si o si (ej. una factura) necesito que la impresión comience a una determinada altura.
Lo que proponés lo tengo hecho para hacer coincidir filas/columnas y me funciona bien pero no logra hacer que la impresión comience 1 cm aprox. más abajo.
Libreria: FWH/FWHX 9.11 25/November/2009
Harbour: Harbour 2.0.0 Beta2
Compilador: Borland C++ 5.5.1 versión 32 bits
Editor de Recursos: UEstudio 10.0
Gestor de B.D: A.D.A ( Advantage Data Architect )
S.O: Windows XP
User avatar
karinha
Posts: 7944
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: TPRINTER como configurar los margenes?

Post by karinha »

Hola, talbéz sea mejor que uses las clases de rafa carmona:

viewtopic.php?f=17&t=2501

salud2
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
leondefrancia
Posts: 33
Joined: Tue Jun 08, 2010 3:34 pm
Location: Rosario, Santa Fe. Argentina

Re: TPRINTER como configurar los margenes?

Post by leondefrancia »

Gracias otra vez Karinha por tu pronta respuesta, tengo el trabajo terminado y no puedo volver a empezar de nuevo con otra clase. De todas maneras intenté descargarla para ver si usa tprinter y si configura algo distinto pero el link ya no existe.
Existe algún link de descarga dentro de la página de fivetech donde pueda hallarla?

Desde ya muchas gracias.
Libreria: FWH/FWHX 9.11 25/November/2009
Harbour: Harbour 2.0.0 Beta2
Compilador: Borland C++ 5.5.1 versión 32 bits
Editor de Recursos: UEstudio 10.0
Gestor de B.D: A.D.A ( Advantage Data Architect )
S.O: Windows XP
User avatar
karinha
Posts: 7944
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: TPRINTER como configurar los margenes?

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Post Reply