Página 1 de 1

Impressão em xHarbour

Enviado: 02 Mai 2008 16:56
por Romeuk
Amigos, cá tou eu de novo...
Não consegui imprimir de nenhuma das formas que encontrei sugeridas aqui. Imprimir para arquivo até que deu... Mas para a impressora, não... Aí consegui um exemplo na internet - http://culikr.sites.uol.com.br/howto.htm - que compilei e que roda faceiro... Só que ele tb não imprime... (Testei em 3 micros com impressoras de rede (2) e impressora local(1)). Aonde é que estáo furo?

Grato

Romeu

Código: Selecionar todos

function Main()

* Impressão em xHarbour

CLS
?? 'Test program for WINDOWS printing'
? '---------------------------------'
? SET(_SET_DEVICE)
aPrinter:=GetPrinters()
IF EMPTY(aPrinter)
? '----- No Printers installed'
ELSE
set printer to (GetDefaultPrinter())
? SET(_SET_PRINTER)
? SET(_SET_PRINTFILE)
set console off
set printer on
? 'Default Printer'
?'----------------'
? GetDefaultPrinter()
?
? 'Printers Available'
?'-------------------'
FOR x:= 1 TO LEN(aPrinter)
? aPrinter[x]
NEXT x
aPrinter:= GetPrinters(.T.)
? 'Printers and Ports'
?'-------------------'
FOR x:= 1 TO LEN(aPrinter)
? aPrinter[x,1]+' on '+aPrinter[x,2]
NEXT x
EJECT
set printer off
set console on
set printer to
ENDIF
? SET(_SET_PRINTER)
? SET(_SET_DEVICE)
WAIT
return( nil )
g

Re: Impressão em xHarbour

Enviado: 02 Mai 2008 17:08
por rodrmigu
Olá,

Se for impressora padrão windows gráfico, não funciona. Isso funciona apenas para impressoras matriciais e as que funcionem em DOS.

Para impressão padrão windows, vc precisa usar a Win32prn.

[]'s
Rodrigo

Re: Impressão em xHarbour

Enviado: 02 Mai 2008 17:22
por sygecom
Olá Romeuk,
Compile o Exemplo do link abaixo:
viewtopic.php?t=6465

Com esse exemplo você pode imprimir em qualquer impressora.

Abraços
Leonardo Machado

Re: Impressão em xHarbour

Enviado: 05 Mai 2008 21:17
por Romeuk
Agradeço aos dois. O exemplo foi muito instrutivo. Mas a melhor solução (ou pelo menos a mais prática para mim) foi imprimir para arquivo e depois usar PrintFileRaw(). Até a próxima...
Romeu

Re: Impressão em xHarbour

Enviado: 06 Mai 2008 11:19
por sygecom
Olá RomeuK,
Apenas uma observação, a função PRINTFILERAW() não imprime em algumas impressoras mais modernas.

Re: Impressão em xHarbour

Enviado: 06 Mai 2008 13:02
por Hasse
Faço côro com o Leonardo. Já que há necessidade de alterar algo, não tem sentido migrar pela metade, pois certamente mais tarde será necessário "trabalhar" a rotina novamente.

E a Classe Win32prn() é muito fácil. Depois que se pega o jeito, a migração é muito rápida.

Em alguns casos, conforme o cliente, até mantenho as 2 formas de impressão, tipo:

Código: Selecionar todos

IF c_PRN = "WIN"
   ...
   código Win32prn
   ...
ELSE
   ...
   código para imprimir direto na LPTx
   ...
ENDIF

Re: Impressão em xHarbour

Enviado: 06 Mai 2008 17:37
por ederxc
Se usa alguma GUI , aconselho usar a liguagem da própria para impressão , nesse caso se torna ainda muito mais fácil


té++ X:)

Re: Impressão em xHarbour

Enviado: 06 Mai 2008 23:25
por Romeuk
Opa! Já jogaram água quente no meu sorvete, hehe...
Mas é assim que se aprende. Vou estudar melhor essa tar de Win32prn() .
O detalhe específico desta aplicação em que estou focado é que ela usa impressoras matriciais.
Aliás, se alguem estiver curioso, dá uma checada no $$$ de compra de uma matricial versus qquer jato de tinta. É brincadeira. Mas vou testar Win32prn() com matricial nem ue seja pra aprender.

Romeu

PS.: Inter 8 x Juventude 1, embora o xHarbour não tenha nada a ver com isso...
:)) :)) :))

Re: Impressão em xHarbour

Enviado: 08 Mai 2008 20:05
por sygecom
Um bom exemplo para estudo é esse do colega Hasse.
viewtopic.php?t=6465