Impressão Matricial em Rede
Olá galera !!!!
Tenho uma aplicacao que imprime via rede em impressora matricial...
uso o seguinte comando
AssingFile(s,´Lpt1´);
Em painel de controle ( Impressora ) tenho que capturar a porta para funcionar, so que isto tem me causado serios problemas...
alguem tem alguma dica de como melhorar isso..
grato..
Robson.
Tenho uma aplicacao que imprime via rede em impressora matricial...
uso o seguinte comando
AssingFile(s,´Lpt1´);
Em painel de controle ( Impressora ) tenho que capturar a porta para funcionar, so que isto tem me causado serios problemas...
alguem tem alguma dica de como melhorar isso..
grato..
Robson.
Robsons
Curtidas 0
Respostas
Cesarpir
04/08/2005
Amigo eu faço assim:
1º) Compartilhe as impressoras que deseja, porém na hora de informar o nome do compartilhamento coloque nome com até 8 digitos;
2º) Acrescente a clausula Printers no Uses, e tb acrescente um combobox com o name de CImp no seu form de impressão declare uma procedure CarregaImpressoras, e codifique crie um procedimento assim:
procedure TForm1.CarregaImpressoras;
var I : Integer;
begin
CImp.Items.Clear;
CImp.Items.Add(´LPT1´);
for I:= 1 to Printer.Printers.Count do Begin
if Pos(´LPT´, printer.Printers.Strings[I-1]) > 0Then
CImp.Items.Add(´LPT1´)
else if Pos(´\´, printer.Printers.Strings[I-1]) > 0 Then
CImp.Items.Add(Copy(printer.Printers.Strings[I-1],
Pos(´\´, printer.Printers.Strings[I-1]),
length(printer.Printers.Strings[I-1]) -
Pos(´\´, printer.Printers.Strings[I-1]) + 1));
end;
CImp.ItemIndex := 0;
end;
3º) No evento onshow do seu form chame o procedimento:
CarregaImpressoras;
4º) No código de impressão fica assim:
AssignFile(F,cArq);
Rewrite(F);
Bom é só testar pelo menos comigo funciona, se existe uma forma mais simples admito que nunca procurei saber, ah não se esqueça de que o nome de compartilhamento e tb por desencargo de consciência após adicionar a impressora o nome tb ok, e não precisa capturar porta.
A intenção que no combobox liste todas as impressoras que estiverem compartilhadas no micro e LPT1 para a impressora local.
Espero que ajude
César
1º) Compartilhe as impressoras que deseja, porém na hora de informar o nome do compartilhamento coloque nome com até 8 digitos;
2º) Acrescente a clausula Printers no Uses, e tb acrescente um combobox com o name de CImp no seu form de impressão declare uma procedure CarregaImpressoras, e codifique crie um procedimento assim:
procedure TForm1.CarregaImpressoras;
var I : Integer;
begin
CImp.Items.Clear;
CImp.Items.Add(´LPT1´);
for I:= 1 to Printer.Printers.Count do Begin
if Pos(´LPT´, printer.Printers.Strings[I-1]) > 0Then
CImp.Items.Add(´LPT1´)
else if Pos(´\´, printer.Printers.Strings[I-1]) > 0 Then
CImp.Items.Add(Copy(printer.Printers.Strings[I-1],
Pos(´\´, printer.Printers.Strings[I-1]),
length(printer.Printers.Strings[I-1]) -
Pos(´\´, printer.Printers.Strings[I-1]) + 1));
end;
CImp.ItemIndex := 0;
end;
3º) No evento onshow do seu form chame o procedimento:
CarregaImpressoras;
4º) No código de impressão fica assim:
AssignFile(F,cArq);
Rewrite(F);
Bom é só testar pelo menos comigo funciona, se existe uma forma mais simples admito que nunca procurei saber, ah não se esqueça de que o nome de compartilhamento e tb por desencargo de consciência após adicionar a impressora o nome tb ok, e não precisa capturar porta.
A intenção que no combobox liste todas as impressoras que estiverem compartilhadas no micro e LPT1 para a impressora local.
Espero que ajude
César
GOSTEI 0
Cesarpir
04/08/2005
opa amigo o codigo de impressão fica assim:
AssignFile(F,cImp.text);
Rewrite(F);
Perdão :oops:
César
AssignFile(F,cImp.text);
Rewrite(F);
Perdão :oops:
César
GOSTEI 0
Robsons
04/08/2005
funcionou.....
obrigado...
obrigado...
GOSTEI 0
Guilherme
04/08/2005
so que impressoras mapeadas nao vao funcionar !!!! tipo a impressora mapeada assim ´lpt´ nao imprime na propriedade ports tem ki tar o local da rede tipo ´\\servidor\epsonlx-´
GOSTEI 0
Cesarpir
04/08/2005
Amigo desculpa num entendi, como assim impressoras mapeadas, eu utilizo assim a um bom tempo, eu adiciono LPT1 manualmente para o usuário imprimir na impressora local, e o for seleciona as impressora mapeadas inclusive com o caminho \\Servidor\Epson por exemplo, tive problemas quando o nome é maior que 8 caracteres, ai sim, se não funciona como então ? Se existe uma outra forma e que seja mais facil disponibiliza ai.
César
César
GOSTEI 0
Edilcimar
04/08/2005
o problema que o gborges falou só é válido com o windows xp, se vc mapear a impressora via windows, na hora de imprimir de uma estação onde nao tem impressora, dá erro vc tem que mapear via DOS utilizando net print
GOSTEI 0
Cesarpir
04/08/2005
Bom gente o fato que uso assim não tenho problemas nenhum, com certeza vcs sabem o que estão falando, mas eu particularmente nunca não vejo problemas, eu uso assim em clientes que tem xp, 98 e 2000 na mesma rede, uso o compartilhamento pelo assistente do windows, sem net use ou net print que edicilmar comentou, e tá funcionando a mais de 3 anos, tive problemas repito quando ao nome do compartilhamento passar de 8 caracteres, ai sim. Mas enfim contornei o problema.
Até mais
César
Até mais
César
GOSTEI 0
Dopi
04/08/2005
Acho que usando LPT1 vc não conseguirá imprimir em impressoras USB localmente, ou seja, na máquina que ela está instalada...
GOSTEI 0
Cesarpir
04/08/2005
Veja bem Dopi, eu somente uso impressão diretamente para a impressora para notas fiscais, boletos, etc. Este tipo de relatório quando é para matriciais, agora se existe matricial usb, desculpe eu não conheço.
Quando tenho que fazer relatórios com gráficos, imagens, enfim mais complicados uso o fortes report e ai tudo bem.
César
Quando tenho que fazer relatórios com gráficos, imagens, enfim mais complicados uso o fortes report e ai tudo bem.
César
GOSTEI 0