Con esto activado la impresión de FW directa a una impresora no funciona, siempre utiliza la última que se imprimió independientemente del parámetro que se le pasa. Entiendo que es porque la clase PRINTER cambia la impresora por defecto y Windows se lo salta a la torera.
¿Podéis probarlo para ver si es mi versión de FW? (12.04 y Harbour 3.2)
Aquí un ejemplo autocontenido :
Code: Select all
#include "fivewin.ch"
function Main()
local oPrn, oFont, aPrinters:={}, cPrinter:=""
aPrinters:=AGetPrinters()
cPrinter:=aPrinters[MsgList (aPrinters, "Elija impresora")]
MSginfo (cPrinter)
PRINT oPrn NAME "Test Impresión" TO cPrinter
DEFINE FONT oFont NAME "Arial" SIZE 0, -10 BOLD OF oPrn
oPrn:SetPage(9) // A4
oPrn:SetPortrait() //Vertical
PAGE
oPrn:cmSay( 1.0, 1.0, "Superior Izquierda", oFont)
oPrn:cmSay( 1.0, 10.5, "Superior Centro", oFont)
oPrn:cmSay( 1.0, 20.0, "Superior Derecha", oFont)
oPrn:cmSay(28.0, 1.0, "Inferior Izquierda", oFont)
oPrn:cmSay(28.0, 10.5, "Inferior Centro", oFont)
oPrn:cmSay(28.0, 20.0, "Inferior Derecha", oFont)
ENDPAGE
ENDPRINT
RELEASE FONT oFont
return nil
function AGetPrinters() // returns an array with all the available printers
local aPrinters, cText, cToken := Chr( 15 )
cText = StrTran( StrTran( StrTran( ;
GetProfString( "Devices", 0 ), Chr( 0 ), cToken ), Chr( 13 ) ), Chr( 10 ) )
aPrinters = Array( Len( cText ) - Len( StrTran( cText, cToken ) ) )
AEval( aPrinters, { |cPrn, nEle | ;
aPrinters[ nEle ] := StrToken( cText, nEle, cToken ) } )
return aPrinters