func getprinters() em harbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

func getprinters() em harbour

Mensagem por rosalvo rosa »

Para usar a função GetPrinters() em Harbour preciso de alguma lib?

Ou existe outra função já pronta em Harbour para listar as impressoras ?


Estou compilando Harbour em MinGW.


Reformulando:

Estou iniciando em Harbour, e preciso imprimir usando impressoras, tanto matriciais como laser, mas em ambos
os casos, imprimo sempre textos.

Após uma vasculhada no forum, encontrei bons exemplos, mas as funções que são usadas, não são
compatíveis com a versão de Harbour que uso, a qual foi atualizada em jan/2010. Já constatei que
GetPrinters() foi substituída por win_printerlist(), mas quando compilo, o Harbour me diz que não
foi encontrado nenhuma referencia sobre elas.

Como preciso imprimir somente textos, nada gráfico, qual minha melhor opção?




Agradeço a colaboraçao dos amigos.

Rosalvo
toninhofwi
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 23 Set 2009 22:35
Localização: Catanduva-SP

Re: func getprinters() em harbour

Mensagem por toninhofwi »

Olá.

Você precisa da HBWin.LIB.

A função é esta: WIN_PrinterList()

o melhor é consultar os exemplos que tem na HBWIN porque há parâmetros que esta função aceita.

Se deseja usar a mesma sintaxe que usava no xharbour, use a XHB.LIB.

Toninho.
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: func getprinters() em harbour

Mensagem por rosalvo rosa »

Tentei localizar a Hbwin.lib mas não encontrei.


Enquanto isso, preciso então imprimir na Printer Default mesmo.

Como eu faço para imprimir o "arquivo.txt" na impressora default ?

Como postei lá na primeira, eu estou usando o Harbour de jan//2010 com MinGW.

Quem pode me ajudar ??
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: func getprinters() em harbour

Mensagem por sygecom »

rosalvo rosa escreveu:Tentei localizar a Hbwin.lib mas não encontrei.
Como está usando Mingw procure por libhbwin.a
Enquanto isso, preciso então imprimir na Printer Default mesmo.
Como eu faço para imprimir o "arquivo.txt" na impressora default ?
Pode usar assim:
WIN_PRINTFILERAW( WIN_PRINTERGETDEFAULT() , "arquivo.txt", "Impressao de Conhecimento de Transporte" )
Todas as funções WIN_ depende que seja linkado a libhbwin.a

Código: Selecionar todos

       WIN_PRINTEREXISTS()     (antigo nome: PRINTEREXISTS())
        WIN_PRINTERSTATUS()     (antigo nome: XISPRINTER())
        WIN_PRINTERPORTTONAME() (antigo nome: PRINTERPORTTONAME())
        WIN_PRINTERLIST()       (antigo nome: GETPRINTERS())
        WIN_PRINTERGETDEFAULT() (antigo nome: GETDEFAULTPRINTER())
        WIN_PRINTERSETDEFAULT() (antigo nome: SETDEFAULTPRINTER())
        WIN_PRINTFILERAW()      (antigo nome: PRINTFILERAW())
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: func getprinters() em harbour

Mensagem por rosalvo rosa »

Agora sim, esta lib vem junto com o Harbour. Beleza....

Vou linkar agora mesmo...

Valeu Leonardo, muito obrigado mais uma vez.


Rosalvo
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: func getprinters() em harbour

Mensagem por rosalvo rosa »

Pessoal, eu já estou usando e compilando todas as funções que o Leonardo postou, todas funcionando ...

O que acontece é que o "arquivo.txt" vai para o spooler da impressora e a mesma trava.

Testei em mais de uma impressora e deu a mesma coisa. Será que tem algum comando antes da função para que possa imprimir ??

A Quem ajudar agradeço ...


Att,


Rosalvo
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: func getprinters() em harbour

Mensagem por Itamar M. Lins Jr. »

Não pode usar "raw" em impressoras "for windows" tem que usar a classe win_prn().

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: func getprinters() em harbour

Mensagem por rosalvo rosa »

Ok, Itamar!

Então como ficaria a edição da Win_prn para Harbour + MinGw ?
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: func getprinters() em harbour

Mensagem por Itamar M. Lins Jr. »

Tem várias formas.
Mas vou colocar uma que uso:

Código: Selecionar todos

*********************************
Function PrintWinPrn(cArq,cPrint)
*********************************
*
*
Local oPrn, aPrn:=GetPrinters(), n := 0
if empty(aPrn)
   MsgInfo('Não há impressoras instaladas')
   return .f.
endif
If cPrint == Nil
 cPrint := GetDefaultPrinter()
EndIf
   
oPrn := win_prn():New(cPrint)
oPrn :LandScape := .f.
oPrn :FormType  := FORM_A4
oPrn :Copies    :=  1
oPrn:CharSet(255)
oPrn:setfont('Courier New',,12,,,,255)

if !oPrn:Create()
    MsgInfo("Não foi criado documento")
    return nil
EndIf
if !oPrn:startDoc("Imprimindo Documento")
	MsgInfo("Erro na Impressora")
	return nil
EndIf

HB_CDPSelect("PT850")
  setprc(5,0)
  cText := memoread(cArq) 
  nLinh := mlcount(cText)
  For n := 1 to nLinh
	  oPrn:TextOut(ansitooem(memoline(cText,,n)),.t.)
  Next
  oPrn:EndDoc()

HB_CDPSelect( "PTISO") 
  
Return .t.
Dessa forma podemos trabalhar com Gregos e Troianos, se bem que na Grecia o bixo tá pegando...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: func getprinters() em harbour

Mensagem por rosalvo rosa »

Ok. Tem algum include para FORM_A4 ?

E quanto a ANSITOOEM ?

Tem lib ?
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: func getprinters() em harbour

Mensagem por Itamar M. Lins Jr. »

Ops!

Código: Selecionar todos

#include 'hbcompat.ch'
#define FORM_A4 9
#define FORM_LT 1
Eu uso o Harbour do SVN.
Mas essa função tem no xHarbour.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: func getprinters() em harbour

Mensagem por Itamar M. Lins Jr. »

O ansitooem é para imprimir os acentos corretamente. Inclusive na LX300.
Pode tirar se desejar.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: func getprinters() em harbour

Mensagem por rosalvo rosa »

Eu estou trabalhando com Harbour também, só que ele não encontrou referencia sobre esta função.

Será que não tem ela para linkar como um .prg ?
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: func getprinters() em harbour

Mensagem por Itamar M. Lins Jr. »

Oi, linkou as xHB, hbWin ?
Obs! não necessáriamente nessa mesma ordem.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Re: func getprinters() em harbour

Mensagem por rosalvo rosa »

Beleza, só alegria. Muito obrigado Itamar.

Valeu mesmo.

Um abraço.

Rosalvo
Responder