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 dos caras?
Gracias
Imprimir a dos caras.
Hola,
Bueno, he hecho esto, pero con unos cambios 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
Bueno, he hecho esto, pero con unos cambios 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
Kleyber Derick
FWH / xHb / xDevStudio / SQLLIB
FWH / xHb / xDevStudio / SQLLIB
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
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
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 | Expand
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 oDlgreturn nil
Y en la función PrintPrv lo hice asi:
Code: Select all | Expand
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() endifreturn 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,
Kleyber Derick
FWH / xHb / xDevStudio / SQLLIB
FWH / xHb / xDevStudio / SQLLIB