Escolher Impressora
Moderador: Moderadores
Escolher Impressora
Ola, boa tarde
Sou novo no Xharb, gostaria de saber como faço, qual o comando, para escolher uma impressora na rede ou local. obrigado
Sou novo no Xharb, gostaria de saber como faço, qual o comando, para escolher uma impressora na rede ou local. obrigado
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Escolher Impressora
Dê uma olhada nestes tópicos:
https://pctoledo.org/forum/viewto ... 485#p43485
https://pctoledo.org/forum/viewtopic.php?t=6465 (procure por GetPrinters)
Link para busca da função GETPRINTERS():
https://pctoledo.org/forum/search ... etprinters
Abraços,
https://pctoledo.org/forum/viewto ... 485#p43485
https://pctoledo.org/forum/viewtopic.php?t=6465 (procure por GetPrinters)
Link para busca da função GETPRINTERS():
https://pctoledo.org/forum/search ... etprinters
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Re: Escolher Impressora
Ja pesquisei antes de postar, mas não achei nada a respeito.
Alguem teria uma rotina em xharb para disponibilizar, para escolha de inpressoras para impressão.
agradeço
Abrçs
Alguem teria uma rotina em xharb para disponibilizar, para escolha de inpressoras para impressão.
agradeço
Abrçs
- jairfab
- Usuário Nível 3

- Mensagens: 252
- Registrado em: 21 Mai 2007 09:43
- Localização: São Paulo, Região Leste - Suzano
Re: Escolher Impressora
Cara está tudo nos link que toledo relacionou!
Mas você já utiliza alguma lib para gerar relatorios tipo WIN32PRN ou outras....?
Mas você já utiliza alguma lib para gerar relatorios tipo WIN32PRN ou outras....?
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Escolher Impressora
Amigo, você está usando alguma lib gráfica, tipo MiniGui, HwGui, FiveWin, etc... ou seu programa é só modo texto (DOS)?
Abraços,
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Escolher Impressora
Se a impressora em que você quer imprimir está instalada no Windows do PC que você quer para imprimir, então pode inserir este código:braz escreveu:gostaria de saber como faço, qual o comando, para escolher uma impressora na rede ou local
Código: Selecionar todos
FUNCTION Main()
LOCAL nPrn:=1
LOCAL aPrn:= GetPrinters()
CLS
IF EMPTY(aPrn)
Alert("Nemnhma impressora instalada !")
QUIT
ENDIF
DO WHILE !EMPTY(nPrn)
CLS
@ 0,0 SAY 'Escolha uma impressora. ESC para sair.'
@ 1,0 TO maxRow(),maxCol()
nPrn:= ACHOICE(2,1,maxRow()-1,maxCol()-1,aPrn,.T.,,nPrn)
IF !EMPTY(nPrn)
// Imprimir(aPrn[nPrn]) // Função que imprime
ENDIF
ENDDO
RETURN(NIL)Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Re: Escolher Impressora
Obrigado Pablo por responder.
É quase isso que vc fez, mas qdo escolho qualquer impressora da rede e teclo ESC a impressão sai na impressora local.
Obrigado, abçs
É quase isso que vc fez, mas qdo escolho qualquer impressora da rede e teclo ESC a impressão sai na impressora local.
Quero imprimir modo texto diretamente na impressora escolhida, estou usando Xharb.Você pediu para selecionar impressora, mas não disse como você vai querer imprimir. Em modo texto ou gráfico. Você está mandando a impressão diretamente à impressora ou está criando um arquivo de impressão. Você está usando Harbour ou xHarbour em modo console ?
Obrigado, abçs
Editado pela última vez por Pablo César em 12 Jan 2011 09:45, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ quote ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r0
Razão: Mensagem editada para colocar a tag [ quote ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r0
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Re: Escolher Impressora
Ola!
Não tem como nós advinharmos algumas coisas, quanto mais voce poder explicar para nós melhor.
Por exemplo:
Usado o xHarbour 1.xx no Windows XP SP3, como fazer para imprimir em rede usando a classe WIN_PRN ?
No windows usando a classe PRN é sempre o mesmo comando, a impressora na estação tem que está compartilhada.
Agora se voce usa SET PRINTER TO é preciso mapear a impressora.
São comandos diferentes, como vamos advinhar ?
Saudações,
Itamar M. Lins Jr.
Você precisa ler a seção, como fazer perguntas inteligentes.É quase isso que vc fez, mas qdo escolho qualquer impressora da rede e teclo ESC a impressão sai na impressora local.
Não tem como nós advinharmos algumas coisas, quanto mais voce poder explicar para nós melhor.
Por exemplo:
Usado o xHarbour 1.xx no Windows XP SP3, como fazer para imprimir em rede usando a classe WIN_PRN ?
Está pergutando ou afirmando ?qual o comando, para escolher uma impressora na rede ou local.
No windows usando a classe PRN é sempre o mesmo comando, a impressora na estação tem que está compartilhada.
Agora se voce usa SET PRINTER TO é preciso mapear a impressora.
São comandos diferentes, como vamos advinhar ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Escolher Impressora
É... realmente está dificil de entender. Você braz faz um pedido mas não especifica o que você está fazendo para imprimir. Aí fica dificil de adivinhar... Por isso eu apenas me limitei a passar o código que seleciona impressoras, pois esse é o título do seu post. Mas vamos lá... vamos ser mais detalhistas possível, mais específicos e tentaremos te ajudar. Analisemos o que você disse:Itamar escreveu:Não tem como nós advinharmos algumas coisas, quanto mais voce poder explicar para nós melhor.
Você escolheu ou deu um ESC ? Escolher pra mim é dar um ENTER. Veja que o exemplo que passei trata corretamente essa questão do ESC. Portanto se você fez igual ao que te passei, então não tinha por quê imprimir quando dá um ESC. Dar um ESC nessa situação é para cancelar a impressão. Certo ?braz escreveu:mas qdo escolho qualquer impressora da rede e teclo ESC a impressão sai na impressora local
Se imprimiu, é porque você colocou no lugar errado a função de impressão. Por isso perguntei cómo você está imprimindo. E por isso o colega Itamar disse:
Então se você ja tem teu código de impressão com o "SET PRINTER TO" é claro que irá imprimir na LPT1 (por geral é a impressora local) então você não precisa selecionar impressora alguma. Mas se você quer mudar essa situação, você devia ter composto a sua pergunta de forma diferente, assim nós podemos te guiar da melhor forma. Acontece que este tema de impressão é bem extenso e você precisa rever seus conceitos com xHarbour. Pois existem várias formas de imprimir. Se você quer continuar a imprimir do jeito do antigo Clipper, você terá algumas restrições, pois não toda impressora imprime em modo RAW, algumas não obedecem os comandos padrão EPSON. Então se você quer utilizar xHarbour, você deve pensar como o xHarbour trabalha e para isso você tem que ler aqueles tópicos que o Sr. Toledo passou. Se você tem pressa e não consegue digerir tanto texto e ainda quer um resultado rápido, eu sugiro você redirecionar sua impressão para arquivo de impressão e daí se as impressoras estão devidamente mapeadas é só adicionar no final do relatório, após a geração do arquivo, a seguinte linha:...para imprimir em rede usando a classe WIN_PRN...
...a impressora na estação tem que está compartilhada...
Agora se voce usa SET PRINTER TO é preciso mapear a impressora
Código: Selecionar todos
cSaida:="\\COMPUTADOR1\EPSON" // digamos que a sua impressora seja esta
COPY FILE("REL001.PRN") TO (cSaida)Aconselho que toda operação, a de impressão ou geração de arquivo de impressão, você faça uma função por separado, não faça tudo numa só função Main... pois veja a linha 15 a função "Imprimir(aPrn[nPrn])" do meu exemplo anterior. É aí que irá funcionar se você SELECIONAR uma impressora e se der ESC daí não irá imprimir, pois a variável nPrn terá valor ZERO quando der um ESC.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Re: Escolher Impressora
Pablo !!
Se a pergunta lhe falta dados, é so perguntar que responderei.
Essa rotina que vc passou, se vc olhar BEM, vai perceber que se voce apertar a tecla ENTER, não irá acontecer nada, então deve estar faltando algo, voce nao acha?
A relação de impressoras está aparecendo, mas não da pra escolher.
Eu sou novo na area, se voce puder me ajudar, eu lhe agradeço.
Obrigado
Se a pergunta lhe falta dados, é so perguntar que responderei.
Essa rotina que vc passou, se vc olhar BEM, vai perceber que se voce apertar a tecla ENTER, não irá acontecer nada, então deve estar faltando algo, voce nao acha?
A relação de impressoras está aparecendo, mas não da pra escolher.
Eu sou novo na area, se voce puder me ajudar, eu lhe agradeço.
Obrigado
Editado pela última vez por Toledo em 12 Jan 2011 17:41, em um total de 2 vezes.
Razão: Mensagem editada para retirar o QUOTE total da mensagem anterior.
Razão: Mensagem editada para retirar o QUOTE total da mensagem anterior.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Escolher Impressora
Faz um teste com este exemplo:
Abraços,
Código: Selecionar todos
FUNCTION Main()
CLS
cImp:=EscolheImp()
IF !EMPTY(cImp)
SET PRINTER TO (cImp)
SET DEVICE TO PRINT
@ 10,10 SAY "TESTE DE IMPRESSAO"
@ 12,10 SAY "AQUI VOCE MONTA SEU RELATORIO"
EJECT
SET PRINTER TO
SET DEVICE TO SCREEN
ENDIF
RETURN NIL
Function EscolheImp()
LOCAL nPrn:=1, cRet:="", nCol, nLin
LOCAL aPrn:= GetPrinters()
IF EMPTY(aPrn)
Alert("Nemnhma impressora instalada !")
RETURN (cRet)
ENDIF
nCol:=1
nLin:=IF(Len(aPrn)>10,10,Len(aPrn))
For i=1 TO Len(aPrn)
if Len(aPrn[i])>nCol
nCol:=Len(aPrn[i])
endif
Next
@ 0,0 SAY 'Escolha uma impressora. ESC para sair.'
@ 1,0 TO nLin+2,nCol+1
nPrn:= ACHOICE(2,1,nLin+1,nCol,aPrn,.T.,"FUNCSEL",nPrn)
IF nPrn>0
cRet:=aPrn[nPrn]
ENDIF
RETURN (cRet)
FUNCTION FuncSel( nMode, nElement, nRow )
LOCAL nKey := LastKey()
IF nMode==3
IF nKey==13
RETURN 1
ELSEIF nKey==27
RETURN 0
ENDIF
ENDIF
RETURN 2Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Escolher Impressora
Braz ,
Você é quem tem que ter paciência... ao final de contas é você quem precisa aprender. Então, vamos tentar baixar o tom de voz e focarmos ao seu problema, certo ? Pois aqui ninguém tem obrigação de responder e aqui também todos temos o direito de manifestar a nossa opinião desde que não se faça com ofensa.
Acredito que você está conseguindo compilar o exemplo, mas de todas formas disponibilizei o executável para você conferir. Depois disso, me diga se o código que te passei, escolhe ou não a impressora instalada através do ENTER.
Você é quem tem que ter paciência... ao final de contas é você quem precisa aprender. Então, vamos tentar baixar o tom de voz e focarmos ao seu problema, certo ? Pois aqui ninguém tem obrigação de responder e aqui também todos temos o direito de manifestar a nossa opinião desde que não se faça com ofensa.
Vou apenas colocar duas linhas para que você PERCEBA que o código passado, sim escolhe através de um ENTER e com ESC não.braz escreveu:Essa rotina que vc passou, se vc olhar BEM, vai perceber que se voce apertar a tecla ENTER, não irá acontecer nada
Código: Selecionar todos
FUNCTION Main()
LOCAL nPrn:=1
LOCAL aPrn:= GetPrinters()
CLS
IF EMPTY(aPrn)
Alert("Nenhuma impressora instalada !")
QUIT
ENDIF
DO WHILE !EMPTY(nPrn)
CLS
@ 0,0 SAY 'Escolha uma impressora. ESC para sair.'
@ 1,0 TO maxRow(),maxCol()
nPrn:= ACHOICE(2,1,maxRow()-1,maxCol()-1,aPrn,.T.,,nPrn)
IF !EMPTY(nPrn)
// Imprimir(aPrn[nPrn]) // Função que imprime
ALERT("A impressora selecionada foi "+aPrn[nPrn])
ELSE
ALERT("Valor da variavel nPrn ‚ "+ALLTRIM(STR(nPrn))+". Portanto nenhuma impressora selecionada !")
ENDIF
ENDDO
RETURN(NIL)- Anexos
-
seleimp.zip- (372.2 KiB) Baixado 180 vezes
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Re: Escolher Impressora
Sr. Toledo.
Mais uma vez, obrigado pela atenção.
Testei a rotina do Sr. e escolho uma impressora da rede (uma HP laser que está instalada em outro PC), so que a impressão sai na minha impressora local. Pelo NODOSIMP eu consigo imprimir em qualquer impressora, mas segundo me disseram com o Xharbour nao precisaria mais usar o NODOSIMP.
Abraços,
Mais uma vez, obrigado pela atenção.
Testei a rotina do Sr. e escolho uma impressora da rede (uma HP laser que está instalada em outro PC), so que a impressão sai na minha impressora local. Pelo NODOSIMP eu consigo imprimir em qualquer impressora, mas segundo me disseram com o Xharbour nao precisaria mais usar o NODOSIMP.
Abraços,
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Escolher Impressora
Braz, antes de mais nada, procure ler suas MPs (Mensagens Privadas)... para isto entre na opção "Mensagens Privadas Novas:" que está na parte superior desta janela.
Olha, eu não tenho como fazer testes aqui, pois minhas impressoras na rede estão configuradas por IP, e eu não tenho certeza se o comando SET PRINTER aceita endereço de IP. Então se sua impressora estiver configurada atraves de uma caminho normal na rede, tipo: \\servidor\nomeimpressora, acho que este novo código vai dar certo.
Outra coisa, procure analisar e entender o código que estamos lhe passando, isto será ótimo para o seu aprendizado.
Abraços,
Olha, eu não tenho como fazer testes aqui, pois minhas impressoras na rede estão configuradas por IP, e eu não tenho certeza se o comando SET PRINTER aceita endereço de IP. Então se sua impressora estiver configurada atraves de uma caminho normal na rede, tipo: \\servidor\nomeimpressora, acho que este novo código vai dar certo.
Código: Selecionar todos
FUNCTION Main()
CLS
cImp:=QualImp()
IF !EMPTY(cImp)
SET PRINTER TO (cImp)
SET DEVICE TO PRINT
@ 10,10 SAY "TESTE DE IMPRESSAO"
@ 12,10 SAY "AQUI VOCE MONTA SEU RELATORIO"
EJECT
SET PRINTER TO
SET DEVICE TO SCREEN
ENDIF
RETURN NIL
Function QualImp()
LOCAL nPrn:=1, cRet:="", nCol, nLin
LOCAL aPrn:= GetPrinters(.T.)
IF EMPTY(aPrn)
Alert("Nemnhma impressora instalada !")
RETURN (cRet)
ENDIF
nCol:=1
nLin:=IF(Len(aPrn)>10,10,Len(aPrn))
aImp:={}
For i=1 TO Len(aPrn)
if Len(aPrn[i,1])>nCol
nCol:=Len(aPrn[i,1])
endif
AADD(aImp,aPrn[i,1])
Next
@ 0,0 SAY 'Escolha uma impressora. ESC para sair.'
@ 1,0 TO nLin+2,nCol+1
nPrn:= ACHOICE(2,1,nLin+1,nCol,aImp,.T.,"FUNCSEL",nPrn)
IF nPrn>0
IF LEFT(aPrn[nPrn,2],2)=="\\"
cRet:=aPrn[nPrn,2]
ELSE
cRet:=aPrn[nPrn,1]
ENDIF
ENDIF
RETURN (cRet)
FUNCTION FuncSel( nMode, nElement, nRow )
LOCAL nKey := LastKey()
IF nMode==3
IF nKey==13
RETURN 1
ELSEIF nKey==27
RETURN 0
ENDIF
ENDIF
RETURN 2Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
