Imprimir condensado usando WIN_PRN
Enviado: 10 Dez 2015 12:45
Perdão prezado professor, como disse, o cansaço mental e físico é muito grande, pois fico a manhã toda, almoço, tarde, noite e madrugada às vezes pra tentar fazer uma coisa que pra muitos é muito fácil e pra mim tá sendo difícil, pois é um mundo novo, ainda mais, resolvi já pular de winXP pra win10... e com HMG 3.0.46 e já estou tentando instalar e entender (vagamente) a HMG 3.4.2.Toledo escreveu: Amigo, quando falei que era para trocar PDFCreator por cPrint, eu presumi que a sua variável cPrint já tinha o nome da impressora.
Então, realmente no caso da cPRINT eu não tinha percebido (por causa da confusão mental que já estou).
Bom, o seu exemplo funcionou perfeitamente, mas, queria entender o porquê que no seu simples exemplo imprime nas cores mandadas pra impressora e no nosso laboratório (vida real) não dá certo.
Compilei e executei o exemplo seu no braço e funcionou perfeitamente (como já disse)...
na HMG tive que trocar as variáveis do SETCOLOR(HB_WIN_RGB_RED) para simplesmente (RGB_RED), vejam a modificação no código do exemplo do Toledo:
Código: Selecionar todos
#include "hbwin.ch"
Function Main()
cPrint:=WIN_PRINTERGETDEFAULT()
oPrinter:=Win_Prn():new( cPrint )
oPrinter:Create()
oPrinter:StartDoc("Teste")
// oPrinter:SetColor( HB_WIN_RGB_RED ) // não funciona com a HMG
oPrinter:SetColor( RGB_RED ) // não funciona com HBMK2
oPrinter:newline()
oPrinter:setfont('Courier New')
oPrinter:TextOut("IMPRIMINDO NA COR VERMELHA")
// oPrinter:SetColor( HB_WIN_RGB_BLUE ) // não funciona com a HMG
oPrinter:SetColor( RGB_BLUE ) // não funciona com HBMK2
oPrinter:TextOut("IMPRIMINDO NA COR AZUL")
// oPrinter:SetColor( HB_WIN_RGB_GREEN ) // não funciona com a HMG
oPrinter:SetColor( RGB_GREEN ) // não funciona com HBMK2
oPrinter:TextOut("IMPRIMINDO NA COR VERDE")
// oPrinter:SetColor( RGB_YELLOW )
// oPrinter:TextOut("IMPRIMINDO NA COR AMARELA")
oPrinter:EndDoc()
oPrinter:Destroy()
wait
Return NilCódigo: Selecionar todos
***********************************************************************************
************* FUNÇÃO PARA IMPRIMIR EM USB através da WIN_PRN() 6/12/15w beta ******
Function PrintWinPrn( cArq, cPrint )
Local oPrn, aPrn := WIN_PrinterGetDefault(), n := 0
// Local oPrn, aPrn := GetPrinters(), n := 0 // esta linha deu mensagem de erro na compilação com HMG (tipo duplicidade) // aí modifiquei pela linha acima.
oPrn:=Win_Prn():New(cPrint)
// oPrn :SetColor( HB_WIN_RGB_RED )
oPrn:SetColor( HB_WIN_RGB_YELLOW, HB_WIN_RGB_BLUE )
oPrn:SetPen( WIN_PS_SOLID, 1, HB_WIN_RGB_RED )
oPrn:Copies := 1
oPrn:CharSet(255)
if DCI10999->TP_RECIBO=1 .or. DCI10999->TP_RECIBO=2 // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 1 ou 2 ->',DCI10999->TP_RECIBO
// wait
oPrn:SetFont('courier new' , 17, { 1, 17 }, 0, .F., .F.)
// oPrn :SetFont( "Courier New", 12, { 1, 17 }, 0, .F., .F. )
else // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ?'recibo 3 ou outro ->',DCI10999->TP_RECIBO
// wait
oPrn:SetFont( "Lucida Console", 8, { 3, -50 } )
endif // acrescentado p/imprimir condensado ou não, depende do tipo de recibo 7/12/15w
// ? 'após o oPrn - dentro de PrintWinPrn'
// wait
If !oPrn:Create()
Alert("Nao foi criado o documento de Impressao")
Return nil
EndIf
If !oPrn:StartDoc("Imprimindo Documento")
Alert("Erro na Impressora")
Return nil
// else // acrescentado para mostrar na tela que a impressão foi p/USB 7/12/15w
// Alert("Imprimindo na Impressora (multifuncional/laser) USB") // acrescentado para mostrar na tela que a impressão foi p/USB 7/12/15w
EndIf
// HB_CDPSelect("PT850")
SetPrc(0,0)
cText := MemoRead( cArq )
nLinh := MlCount( cText )
For n := 1 to nLinh
oPrn:TextOut(HB_AnsiToOem(MemoLine(cText,,n)),.t.)
// ? nLinh
// wait
Next
oPrn:EndDoc()
oPrn:Destroy()
// HB_CDPSelect( "PTISO")
Return .t.
************* FUNÇÃO PARA IMPRIMIR EM USB através da WIN_PRN() 6/12/15w beta ******
***********************************************************************************Código: Selecionar todos
oPrinter:Create()
oPrinter:StartDoc("Teste")Att...