Page 1 of 1

Imprimir a dos caras.

Posted: Thu Jun 26, 2008 4:03 pm
by fleal
Quiero enviar a la impresora para que imprima por el frente y por el reverso de la hoja.

Esa funcionalidad se le puede decir desde las propiedades.... ¿Hay alguna forma de indicarle desde fivewin que lo haga?

Asi como existe una función para enviar a imprimir en apaisado, vertical, horizontal. ¿Alguna para imprimir a _?

Gracias

Posted: Mon Jun 30, 2008 7:58 pm
by tomafa
saludos,

yo que sepa, no se puede hay impresoras que imprimer en las _ de la hoja, yo tambien estoy buscando la misma funcionalidad pero no he tenido exito, espero que si encuantras la solucion la compartas ya que si yo se o encuentro la solucion tambien la publicare


suerte

Posted: Mon Jun 30, 2008 10:31 pm
by Kleyber
Hola,

Bueno, he hecho esto, pero con _ en TPreview, donde cuando se va a imprimir, el usuario puede escoger dentre paginas pares o paginas impares asi que se puede imprimir primeramente las paginas impares y despues las pares y se puede hacer esto con cualquier impresora. Si desean los detalles, los envio.

Saludos

Posted: Tue Jul 01, 2008 2:20 am
by Johnson
ola Kleyber,
há possibilidade de enviar para meu e-mail:
jhnsn@ymail.com

obrigado.

Posted: Tue Jul 01, 2008 8:16 pm
by fleal
Hola Kleyber,

A ver si entiendo bien.... ¿Le das al usuario que escoja si quiere imprimir las hojas pares o impares?

Yo lo que busco es enviar desde FWH para que la impresora imprima en la misma hoja... la parte de arriba y la de atrás.

Lo que he visto es que mi impresora, no tiene esa propiedad, pero si las impresoras de mayor costo como una HP para oficina.


Saludos
Fernando

Posted: Tue Jul 01, 2008 8:42 pm
by Kleyber
fleal wrote:Hola Kleyber,

A ver si entiendo bien.... ¿Le das al usuario que escoja si quiere imprimir las hojas pares o impares?

Yo lo que busco es enviar desde FWH para que la impresora imprima en la misma hoja... la parte de arriba y la de atrás.

Lo que he visto es que mi impresora, no tiene esa propiedad, pero si las impresoras de mayor costo como una HP para oficina.


Saludos
Fernando
Exactamente eso, Fernando. Lo que pasa es que la mayoria de las impresoras no tiene dicha funcionalidad, pero asi como te comente, desde el preview se puede enviar primeramente las paginas impares y despues seria tan solamente invertir el papel en la impresora y entonces imprimir las paginas pares, haciendo asi lo que deseas.

Lo que hago en la verdad es asi: En la RPreview.prg puse un combobox con las opciones y cambie esto en el:

Code: Select all

static function PrintPage()

     local hOldRes := GetResources()
     local hMeta   := oMeta1:hMeta
     local oDlg, oRad, oPageIni, oPageFin
     LOCAL aModo   := {"Todas as Páginas","Páginas Pares","Páginas Ímpares"}
     PRIVATE nOption := 1 ,;
             nFirst  := 1 ,;
             nLast   := len(DEVICE:aMeta)
     PRIVATE nCopias := nItem := 1

//     if nLast == 1
//          PrintPrv(nil, nOption, nFirst, nLast)
//          RETU nil
//     endif

     SET RESOURCES TO cResFile

     DEFINE DIALOG oDlg RESOURCE "PRINT"

     REDEFINE BUTTON ID 101 OF oDlg ;
          ACTION PrintPrv(oDlg, nOption, nFirst, nLast)

     REDEFINE BUTTON ID 102 OF oDlg ACTION oDlg:End()

     REDEFINE RADIO oRad VAR nOption ID 103,104,105 OF oDlg ;
          ON CHANGE iif(nOption==3 ,;
                       (oPageIni:Enable(),oPageFin:Enable()) ,;
                       (oPageIni:Disable(),oPageFin:Disable()) )

     REDEFINE GET oPageIni ;
          VAR nFirst ;
          ID 106 ;
          PICTURE "@K 99999" ;
          VALID iif(nFirst<1 .OR. nFirst>nLast,(MessageBeep(),.F.),.T.) ;
          OF oDlg

     REDEFINE GET oPageFin ;
          VAR nLast ;
          ID 107 ;
          PICTURE "@K 99999" ;
          VALID iif(nLast<nFirst .OR. nLast>len(DEVICE:aMeta), ;
                    (MessageBeep(),.F.),.T.) ;
          OF oDlg

     REDEFINE GET oCopias VAR nCopias ID 108 of oDlg PICTURE "999" SPINNER ;
          ON UP (++nCopias,if(nCopias>999,nCopias:=999,),oCopias:Refresh() );
          ON DOWN (--nCopias,if(nCopias<1,nCopias:=1,),oCopias:Refresh() ) ;


     REDEFINE COMBOBOX oItem VAR nItem ITEMS aModo ID 109 OF oDlg

     oPageIni:Disable()
     oPageFin:Disable()

     SetResources(hOldRes )

     ACTIVATE DIALOG oDlg

return nil
Y en la función PrintPrv lo hice asi:

Code: Select all

static function PrintPrv(oDlg, nOption, nPageIni, nPageEnd)

     local oDevice := DEVICE
     local aFiles := oDevice:aMeta
     local hMeta := oMeta1:hMeta
     local nFor, nXCopia, nTipoImp

     CursorWait()

     StartDoc(oDevice:hDC, oDevice:cDocument )

     DO case

     case nOption == 1                           // All

          FOR nXCopia = 1 to nCopias
              nTipoImp := nFirst
              FOR nFor := 1 TO len(aFiles)
                  if nItem = 1                  // All Pages
                     #ifdef __CLIPPER__
                        StartPage(oDevice:hDC)
                        hMeta := GetMetaFile(aFiles[nFor])
                        PlayMetaFile( oDevice:hDC, hMeta )
                        DeleteMetafile(hMeta)
                        EndPage(oDevice:hDC)
                    #else
                        StartPage(oDevice:hDC)
                        hMeta := GetEnhMetaFile(aFiles[nFor])
                        PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                        DeleteEnhMetafile(hMeta)
                        EndPage(oDevice:hDC)               
                     #endif   
                  elseif nItem = 2              // Even Pages
                          if mod(nTipoImp,2)=0
                             #ifdef __CLIPPER__
                                StartPage(oDevice:hDC)
                                hMeta := GetMetaFile(aFiles[nFor])
                                PlayMetaFile( oDevice:hDC, hMeta )
                                DeleteMetafile(hMeta)
                                EndPage(oDevice:hDC)
                             #else
                                StartPage(oDevice:hDC)
                                hMeta := GetEnhMetaFile(aFiles[nFor])
                                PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                                DeleteEnhMetafile(hMeta)
                                EndPage(oDevice:hDC)               
                             #endif   
                          endif
                  elseif nItem = 3              // Odd Pages
                          if mod(nTipoImp,2)=1
                             #ifdef __CLIPPER__
                                StartPage(oDevice:hDC)
                                hMeta := GetMetaFile(aFiles[nFor])
                                PlayMetaFile( oDevice:hDC, hMeta )
                                DeleteMetafile(hMeta)
                                EndPage(oDevice:hDC)
                             #else
                                StartPage(oDevice:hDC)
                                hMeta := GetEnhMetaFile(aFiles[nFor])
                                PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                                DeleteEnhMetafile(hMeta)
                                EndPage(oDevice:hDC)               
                             #endif   
                          endif
                   endif
                   ++nTipoImp
              NEXT
          NEXT

     case nOption == 2                           // Current page

          FOR nXCopia := 1 to nCopias
              StartPage(oDevice:hDC)
              hMeta := oMeta1:hMeta
              #ifdef __CLIPPER__
                 PlayMetaFile( oDevice:hDC, hMeta )
              #else   
                 PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
              #endif   
              EndPage(oDevice:hDC)
          NEXT

     case nOption == 3                           // Range

          FOR nXCopia := 1 to nCopias
              nTipoImp := nFirst
              FOR nFor := nPageIni TO nPageEnd
	           if nItem = 1                  // All Pages
                 StartPage(oDevice:hDC)
                 #ifdef __CLIPPER__
                    hMeta := GetMetaFile(aFiles[nFor])
                    PlayMetaFile( oDevice:hDC, hMeta )
                    DeleteMetafile(hMeta)
                 #else   
                    hMeta := GetEnhMetaFile(aFiles[nFor])
                    PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                    DeleteEnhMetafile(hMeta)
                 #endif   
                 EndPage(oDevice:hDC)
              elseif nItem = 2              // Even Pages
                     if mod(nTipoImp,2)=0
                        StartPage(oDevice:hDC)
                        #ifdef __CLIPPER__
                           hMeta := GetMetaFile(aFiles[nFor])
                           PlayMetaFile( oDevice:hDC, hMeta )
                           DeleteMetafile(hMeta)
                        #else   
                           hMeta := GetEnhMetaFile(aFiles[nFor])
                           PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                           DeleteEnhMetafile(hMeta)
                        #endif   
                        EndPage(oDevice:hDC)
                     endif
              elseif nItem = 3              // Odd Pages
                     if mod(nTipoImp,2)=1
                        StartPage(oDevice:hDC)
                        #ifdef __CLIPPER__
                           hMeta := GetMetaFile(aFiles[nFor])
                           PlayMetaFile( oDevice:hDC, hMeta )
                           DeleteMetafile(hMeta)
                        #else   
                           hMeta := GetEnhMetaFile(aFiles[nFor])
                           PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
                           DeleteEnhMetafile(hMeta)
                        #endif   
                        EndPage(oDevice:hDC)
                     endif
              endif
              ++nTipoImp
              NEXT
          NEXT

     endcase

     EndDoc(oDevice:hDC)

     CursorArrow()

     if oDlg != nil
          oDlg:End()
     endif

return nil
Logicamente que debes cambiar la Prev32.dll y poner los dichos controles.

A ver si te sirve (y a los otros que lo desean)

Saludos,