Alguém poderia me explicar como uso os seguintes controles de impressão?:
lPrn := Win_Prn():HavePrinted - Retorna um indicador lógico .T. se a impressão foi concluída.
lPrn := Win_Prn():Printing - Retorna um indicador lógico .T. se a impressora estiver em uso.
Porque ambos comandos acima sempre retornam .F.?
nPrn := Win_Prn():hPrinterDC - Retorna o controlador do arquivo que está sendo impresso.
Porque sempre retorna 0 (zero)?
cPrn := Win_Prn():PrinterName - retorna o nome da impressora sendo usada.
Porque retorna sempre vazio?
PS: No exemplo abaixo claro que a impressão é de apenas uma linha, o que dificultaria detectar a impressora em uso, porém o efeito é o mesmo quando ela realmente esta imprimindo.
Código: Selecionar todos
Function Main()
Local lPrn, nPrn, cPrn
Local oPrn := Win_Prn():New( Win_PrinterGetDefault() )
If !oPrn :Create()
Hb_alert("Nao foi criado o documento de ImpressÆo")
Return nil
ElseIf !oPrn :StartDoc("Imprimindo Documento")
Hb_alert("Erro na Impressora")
Return nil
EndIf
oPrn :NewLine()
oPrn :TextOut( "Teste de impressao" )
nPrn := Win_Prn():hPrinterDC
cPrn := Win_Prn():PrinterName
Clear Screen
@ 2,2 say nPrn
@ 3,2 say cPrn
oPrn :EndDoc()
oPrn :Destroy()
lPrn := Win_Prn():HavePrinted
If !lPrn
Hb_alert("Documento nao foi impresso")
EndIf
lPrn := Win_Prn():Printing
If lPrn
Hb_alert("Impressora ocupada")
EndIf
Return Nil