Dúvida: Impressão Direta (Assignfile) Impressora Não Fiscal Diebold
Olá. Tenho que imprimir um cupom não-fiscal numa Impressora im402td térmica da Diebold. Mas não tenho como testar, porque não tenho uma pra testes de programação. Já li os manuais e vi os exemplos do fornecedor.
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
E como não tenho ela instalada, dá o erro: "The speficies file was not found", é pq realmente não tenho a impressora ou porque tá algo errado? No caso eu tiro este erro com um try ...Except, mas antes, gostaria de saber a causa do erro neste enunciado (digo assim, pq o erro diz q o arquivo não existe, mas estou passando a porta).
E desde já agradeço pela ajuda.
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
var print : textfile ; begin Assignfile (print, 'LPT1'); // = PORTA DE COMUNICACAO rewrite(print); writeLn(print, 'linha impressa...'); closefile(print); //fecha o arquivo end; end;
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
E como não tenho ela instalada, dá o erro: "The speficies file was not found", é pq realmente não tenho a impressora ou porque tá algo errado? No caso eu tiro este erro com um try ...Except, mas antes, gostaria de saber a causa do erro neste enunciado (digo assim, pq o erro diz q o arquivo não existe, mas estou passando a porta).
E desde já agradeço pela ajuda.
Rodrigo Barra
Curtidas 0
Respostas
Carlos Bernardo
14/11/2012
Olá. Tenho que imprimir um cupom não-fiscal numa Impressora im402td térmica da Diebold. Mas não tenho como testar, porque não tenho uma pra testes de programação. Já li os manuais e vi os exemplos do fornecedor.
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
E como não tenho ela instalada, dá o erro: "The speficies file was not found", é pq realmente não tenho a impressora ou porque tá algo errado? No caso eu tiro este erro com um try ...Except, mas antes, gostaria de saber a causa do erro neste enunciado (digo assim, pq o erro diz q o arquivo não existe, mas estou passando a porta).
E desde já agradeço pela ajuda.
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
var print : textfile ; begin Assignfile (print, 'LPT1'); // = PORTA DE COMUNICACAO rewrite(print); writeLn(print, 'linha impressa...'); closefile(print); //fecha o arquivo end; end;
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
E como não tenho ela instalada, dá o erro: "The speficies file was not found", é pq realmente não tenho a impressora ou porque tá algo errado? No caso eu tiro este erro com um try ...Except, mas antes, gostaria de saber a causa do erro neste enunciado (digo assim, pq o erro diz q o arquivo não existe, mas estou passando a porta).
E desde já agradeço pela ajuda.
Boa noite...
Se eu colocar a impressora na LPT1 o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
Sim, vai imprimir...
E como não tenho ela instalada, dá o erro: "The speficies file was not found", é pq realmente não tenho a impressora ou porque tá algo errado?
Normalmente esse erro se dá pela ausência da porta na sua máquina.
Se vc realmente quer fazer um teste, mesmo que vc não tenha porta paralela na máquina ou não tenha uma impressora física para testar, basta instalar uma impressora Genérica e mudar a propriedade PORTAS para texto... compartilha a impressora e pelo MSDOS executa o seguinte comando net use lpt1 \\nomedopc\nomedocompartilhamento
ao executar esse bloco de comando a impressora abre uma tela pedindo para vc salvar o arquivo em algum lugar, vc coloca o caminho e nome do arquivo, depois abre ele no bloco de notas...
GOSTEI 0
Rodrigo Barra
14/11/2012
CARLOS JOSÉ RAUSCH BERNARDO valeu pelas dicas. É bm saber que estou no caminho certo.
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
Olá. Tenho que imprimir um cupom não-fiscal numa Impressora im402td térmica da Diebold. Mas não tenho como testar, porque não tenho uma pra testes de programação. Já li os manuais e vi os exemplos do fornecedor.
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
E como não tenho ela instalada, dá o erro: "The speficies file was not found", é pq realmente não tenho a impressora ou porque tá algo errado? No caso eu tiro este erro com um try ...Except, mas antes, gostaria de saber a causa do erro neste enunciado (digo assim, pq o erro diz q o arquivo não existe, mas estou passando a porta).
E desde já agradeço pela ajuda.
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
var print : textfile ; begin Assignfile (print, 'LPT1'); // = PORTA DE COMUNICACAO rewrite(print); writeLn(print, 'linha impressa...'); closefile(print); //fecha o arquivo end; end;
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
E como não tenho ela instalada, dá o erro: "The speficies file was not found", é pq realmente não tenho a impressora ou porque tá algo errado? No caso eu tiro este erro com um try ...Except, mas antes, gostaria de saber a causa do erro neste enunciado (digo assim, pq o erro diz q o arquivo não existe, mas estou passando a porta).
E desde já agradeço pela ajuda.
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
Olá. Tenho que imprimir um cupom não-fiscal numa Impressora im402td térmica da Diebold. Mas não tenho como testar, porque não tenho uma pra testes de programação. Já li os manuais e vi os exemplos do fornecedor.
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e insia nele um qrgroup e dentro deste qrgroup
os qrlabel e os qrdbtext e na propriedade dele page na opção orientation mude para sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e configura para modo portrait e devina as medidas
do papel, o resto a impressora frá sozinho que é o corte no final de seu cupom corretamente, isto é uma sugestão
pois na rotina acima que vc envia por codigo, é usado para formualrio continuo amigo.
no seu caso é cupom seja fiscal ou não ok?
At+
Vi exemplos na internet pra fazer Impressão Direta através do Delphi.
Gostaria de saber se realmente funciona.
var print : textfile ; begin Assignfile (print, 'LPT1'); // = PORTA DE COMUNICACAO rewrite(print); writeLn(print, 'linha impressa...'); closefile(print); //fecha o arquivo end; end;
Se eu colocar a impressora na LPTI o Delphi realmente vai imprimir nela? O AssignFile vai reconhecer LPT1 como a porta?
sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e insia nele um qrgroup e dentro deste qrgroup
os qrlabel e os qrdbtext e na propriedade dele page na opção orientation mude para sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e configura para modo portrait e devina as medidas
do papel, o resto a impressora frá sozinho que é o corte no final de seu cupom corretamente, isto é uma sugestão
pois na rotina acima que vc envia por codigo, é usado para formualrio continuo amigo.
no seu caso é cupom seja fiscal ou não ok?
At+
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e insia nele um qrgroup e dentro deste qrgroup
os qrlabel e os qrdbtext e na propriedade dele page na opção orientation mude para sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e configura para modo portrait e devina as medidas
do papel, o resto a impressora frá sozinho que é o corte no final de seu cupom corretamente, isto é uma sugestão
pois na rotina acima que vc envia por codigo, é usado para formualrio continuo amigo.
no seu caso é cupom seja fiscal ou não ok?
At+
obs:caso vc faça opção pelo quickreport te passo as configuracões pra vc.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e insia nele um qrgroup e dentro deste qrgroup
os qrlabel e os qrdbtext e na propriedade dele page na opção orientation mude para sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e configura para modo portrait e devina as medidas
do papel, o resto a impressora frá sozinho que é o corte no final de seu cupom corretamente, isto é uma sugestão
pois na rotina acima que vc envia por codigo, é usado para formualrio continuo amigo.
no seu caso é cupom seja fiscal ou não ok?
At+
obs:caso vc faça opção pelo quickreport te passo as configuracões pra vc.
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
correção de texto
sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e insia nele um qrgroup e dentro deste qrgroup
os qrlabel e os qrdbtext e na propriedade dele page na opção orientation mude para sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc terá um imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e configura para modo portrait e devina as medidas
do papel, o resto a impressora frá sozinho que é o corte no final de seu cupom corretamente, isto é uma sugestão
pois na rotina acima que vc envia por codigo, é usado para formualrio continuo amigo.
no seu caso é cupom seja fiscal ou não ok?
At+
obs: caso faça a opção pelo uso do quickreport te passo as configurações.
sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc teráum imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e insia nele um qrgroup e dentro deste qrgroup
os qrlabel e os qrdbtext e na propriedade dele page na opção orientation mude para sim o comando assignfile envia direto para porta paralela LPT1.
só tem um porém pra vc, usando codigo de comando via dos como este seu, vc tera muito trablaho para fazer imprimir no padrão de cupom , digo na questão de imprimir condensado, na rotina que vc esta fazendo vai ter que ter varios codigos para condensar, tipo #13,#27 dai por diante, vc terá que fazer varios teste para se ter o resultado de impresso que Nò ultrapase a largura do papel que é no caso • Largura do papel: 56,5 ± 0,5 mm.
• Diâmetro da bobina (máx.): 65 mm.
• Diâmetro interno do tubete: 12 mm.
• Espessura do papel: 0,060 a 0,078 mm
veja como vc terá um imenso trabalho para condesar a impresão ate chegar neste valores de largura do papel(bobina).
seria mais facil pra vc enviar a impressão usando exemplo o quickreport e configura para modo portrait e devina as medidas
do papel, o resto a impressora frá sozinho que é o corte no final de seu cupom corretamente, isto é uma sugestão
pois na rotina acima que vc envia por codigo, é usado para formualrio continuo amigo.
no seu caso é cupom seja fiscal ou não ok?
At+
obs: caso faça a opção pelo uso do quickreport te passo as configurações.
GOSTEI 0
Rodrigo Barra
14/11/2012
Gilvanio C. Gonçalves, acho que seria uma boa pelo QuickReport sim.
Mas aí eu monto o Relatório (eu sei fazer), mas como que vou chamá-lo e enviá-lo para a impressora? Se puder me enviar as configurações e me der uma ajuda para chamá-lo agradeço.
Mas aí eu monto o Relatório (eu sei fazer), mas como que vou chamá-lo e enviá-lo para a impressora? Se puder me enviar as configurações e me der uma ajuda para chamá-lo agradeço.
GOSTEI 0
Rodrigo Barra
14/11/2012
Aproveitando o embalo, estou implementando o código:
O problema é que entre algumas partes do código, eu tenho outro código que insiro Dados no Banco, como valor, quantidade, etc. Porque aproveito o "laço de repetição". Mas por causa de não ter a porta paralela, sempre cai no Except, por causa do erro: "The speficies file was not found".
A pergunta é, como faço a condição para verificar Independente de Cair no Except eu gravar os dados no Banco? Ou seja, mesmo se não existir a LPT1, os outros dados serão gravados?
var print : textfile ;
begin
try
begin
Assignfile (print, 'LPT1'); // = PORTA DE COMUNICACAO
rewrite(print);
writeLn(print, 'linha impressa...');
closefile(print); //fecha o arquivo
end
except ShowMessage('Erro');
end;
end;O problema é que entre algumas partes do código, eu tenho outro código que insiro Dados no Banco, como valor, quantidade, etc. Porque aproveito o "laço de repetição". Mas por causa de não ter a porta paralela, sempre cai no Except, por causa do erro: "The speficies file was not found".
A pergunta é, como faço a condição para verificar Independente de Cair no Except eu gravar os dados no Banco? Ou seja, mesmo se não existir a LPT1, os outros dados serão gravados?
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
com o seu relatorio pronto pelo quikreport, como disse usando somente o QrGroup
e page como poPortrait, papersize = custo, length = 97,1mm rigthmargin = 0,0mm,
width 69,6mm, propriedades definas para o papel.
configurações para o seu quick report,heigth 476, width = 263, como ele ficará visualmente em tempo de projeto.
para mandar imprimir, use um botão e coloque este codigo:
// pode mandar direto sem o appliaction
onde form2 é o form do quickreport.
declare a uses form2.// no form onde esta o filtro de datas periodo.
declare a uses form1 // no form onde esta o quickreport.
no caso form2 é o form onde é flitrado o periodo.
caso vc
não sei como inserir imagem neste form, se não te mostraria a imagem de quick preparado para cupom?.
e isto. espero que de certo ai com vc.
na questão try e except , isto é para tratamento de erros, sendo que mesmo usando
o sowmwssage,vc Não terá como saber o erro que relamente foi causado.
At+
e page como poPortrait, papersize = custo, length = 97,1mm rigthmargin = 0,0mm,
width 69,6mm, propriedades definas para o papel.
configurações para o seu quick report,heigth 476, width = 263, como ele ficará visualmente em tempo de projeto.
para mandar imprimir, use um botão e coloque este codigo:
Application.CreateForm (TForm2, Form2);// opcional
Form2.quickrep1.Print;onde form2 é o form do quickreport.
declare a uses form2.// no form onde esta o filtro de datas periodo.
declare a uses form1 // no form onde esta o quickreport.
implementation uses uform1, form2;
no caso form2 é o form onde é flitrado o periodo.
caso vc
não sei como inserir imagem neste form, se não te mostraria a imagem de quick preparado para cupom?.
e isto. espero que de certo ai com vc.
na questão try e except , isto é para tratamento de erros, sendo que mesmo usando
o sowmwssage,vc Não terá como saber o erro que relamente foi causado.
At+
GOSTEI 0
Rodrigo Barra
14/11/2012
Gilvanio, obrigado pela ajuda. Vou fazer, imagino q só amanhã será testado de verdade.
Mas igual, com o textFile, pra Imprimir na porta LPT1 eu uso o código:
Eu imprimindo pelo quickreport.Print ele deve mandar pra imprimir na impressora Padrão, certo?
Tem como eu mandar imprimir na LPT1, como o AssignFile?
E mesmo imprimindo pelo QuickReport, depois posso usar os seguintes comandos, sem problemas?
E desde já agradeço pela ajuda.
Mas igual, com o textFile, pra Imprimir na porta LPT1 eu uso o código:
Assignfile (print, 'LPT1');
Eu imprimindo pelo quickreport.Print ele deve mandar pra imprimir na impressora Padrão, certo?
Tem como eu mandar imprimir na LPT1, como o AssignFile?
E mesmo imprimindo pelo QuickReport, depois posso usar os seguintes comandos, sem problemas?
Writeln(Print ,#27 + '&' + '0' + #12 + #48); //Abre a gaveta
Writeln(Print ,#10 + #17); // Corte de papelE desde já agradeço pela ajuda.
GOSTEI 0
Rodrigo Barra
14/11/2012
Só pra ter certeza. Você mandou ajustar o RightMargin=0,0mm . Mas as margens esquerda, superior e inferior continuaão 10mm ?
GOSTEI 0
Marcio
14/11/2012
cara, para imprimir direto na porta teria que usar o AssignPrn ao invés de AssignFile...
falow
falow
GOSTEI 0
Rodrigo Barra
14/11/2012
Márcio, postei AssignFile pq na "net inteira" estava isto. Mas claro, que AssignPrn, é para imprimir mesmo.
Mas o AssignPrn sempre vai imprimir na impressora padrão, certo? Porque no AssignFile tem q colocar a porta LPT1, já o Prn não tem este parâmetro.
E agradeço pela ajuda.
Mas o AssignPrn sempre vai imprimir na impressora padrão, certo? Porque no AssignFile tem q colocar a porta LPT1, já o Prn não tem este parâmetro.
E agradeço pela ajuda.
GOSTEI 0
Rodrigo Barra
14/11/2012
Marcio, realmente, fiz o teste e com o AssignPrn e funcionou, imprimiu na impressora padrão (hp multifuncional). E com o AssignFile que estava tentando não, até pq ele trabalha com arquivos.
E Gilvanio, também fiz o relatorio e nos testes numa hp F280 está imprimindo, agora resta ver se vai funcionar com a impressora não fiscal.
Mas de qualquer maneira agradeço à todos que me ajudaram. (o tópico ainda não está completamente resolvido, mas acho que está perto kkk)
E Gilvanio, também fiz o relatorio e nos testes numa hp F280 está imprimindo, agora resta ver se vai funcionar com a impressora não fiscal.
Mas de qualquer maneira agradeço à todos que me ajudaram. (o tópico ainda não está completamente resolvido, mas acho que está perto kkk)
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
desculpe não der dado a resposta ontem, minha net caiu, e so voltou hoje de manhã.
configuração da proriedade page do quickReport
BottonMargin = 00mm, Columns = 1, ColumnSpace = 0,0mm,LeftMargin = 0,0mm
length 125,9mm, orientation = poPortrait, PaperSize = Custon.
RightMargin = 0,0mm, Ruler = true, TopMargin = 0,0mm, Width 69,6mm.
esta configurações usei na Bematech, vc ajusta conforme
o papel da sua impressora.
ao mandar imprimir veja se nada ficou vazando para esquerda ou direita, se
caso alguma margin der errado só corrigir, mas acredito que Não terá erro
pois as impressoras tipo cupom usam padrão de bobina.
quanto a sua pergunta: usando assignFile irá imprimir direto para impressora padrão.
no quickReport também, pois o comando que te passei quickreport1.print; vai para impressora
definida como padão no windows, e sendo cupom é inviavel preview amigo, pois na tela
de venda antes de imprimir o usuario vê se os dados estão correto, nos damos preview geralmente
em relatórios, mas sendo o quickreport configurado para prPortrait ao dar preview ele exibira
testo grande e visual do quick tipo poupup.
o que vc pode fazer é no form que tem o botão para imprimir, fazer uma rotina com uma tela
de opcão para o usuario que Não é correto mas? que seria assim,
mas entedo a sua duvida e que deve ter uma impressora neste micro
para outros impressos e ela é padrão e tem a de cupom que será usada esporadicamente.
você pode fazer o seguinte, no form onde tem o botão que manda imprimir, vamos deixar o usuario
direcionar a impressora, para isto no form onde esta este botão declare na unit uses Printers
exemplo:
neste mesmo form coloque o componente combobox, acima do combobox um label, caption - selecione a impressora.
no evento oncreate do form este codigo:
e no evento onshow:
no botão imprimir este codigo:
não esqueça das units dos form como mencionei na resposta anterior, form1 use unit form2, form2 use unit form1, ok.
existe outras rotinas como alterar a imprresora padrão do windows na hora da impressão, mas é via codigo e rotina por
procedure um pouco mais complicado, já com o combobox acho que é mais simples pra vc.
quanto a sua pergunta usando o assingfile nunca usei junto com quickreport e vc mostra um comando:
quando respondi que usando assingfile envia direto para impressora é porque eu uso ele , mas desta forma.
veja que não usei o assingprn, isto vai de programador para programador e nescessidade.
para cupom eu uso quickreport, ou fortes report.
Abs.
configuração da proriedade page do quickReport
BottonMargin = 00mm, Columns = 1, ColumnSpace = 0,0mm,LeftMargin = 0,0mm
length 125,9mm, orientation = poPortrait, PaperSize = Custon.
RightMargin = 0,0mm, Ruler = true, TopMargin = 0,0mm, Width 69,6mm.
esta configurações usei na Bematech, vc ajusta conforme
o papel da sua impressora.
ao mandar imprimir veja se nada ficou vazando para esquerda ou direita, se
caso alguma margin der errado só corrigir, mas acredito que Não terá erro
pois as impressoras tipo cupom usam padrão de bobina.
quanto a sua pergunta: usando assignFile irá imprimir direto para impressora padrão.
no quickReport também, pois o comando que te passei quickreport1.print; vai para impressora
definida como padão no windows, e sendo cupom é inviavel preview amigo, pois na tela
de venda antes de imprimir o usuario vê se os dados estão correto, nos damos preview geralmente
em relatórios, mas sendo o quickreport configurado para prPortrait ao dar preview ele exibira
testo grande e visual do quick tipo poupup.
o que vc pode fazer é no form que tem o botão para imprimir, fazer uma rotina com uma tela
de opcão para o usuario que Não é correto mas? que seria assim,
mas entedo a sua duvida e que deve ter uma impressora neste micro
para outros impressos e ela é padrão e tem a de cupom que será usada esporadicamente.
você pode fazer o seguinte, no form onde tem o botão que manda imprimir, vamos deixar o usuario
direcionar a impressora, para isto no form onde esta este botão declare na unit uses Printers
exemplo:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Printers, StdCtrls;
neste mesmo form coloque o componente combobox, acima do combobox um label, caption - selecione a impressora.
no evento oncreate do form este codigo:
ComboBox1.ItemIndex := 0;
e no evento onshow:
ComboBox1.Items.Assign(Printer.Printers);
no botão imprimir este codigo:
Application.CreateForm(TForm2, Form2); //o form. do relatório
try
Form2.QuickRep1.PrinterSettings.PrinterIndex := ComboBox1.ItemIndex; //Define a impressora selecionada
Form2.QuickRep1.Print; //Imprime o relatório
finally
Form2.Release; //Libera o Form da memória
end;não esqueça das units dos form como mencionei na resposta anterior, form1 use unit form2, form2 use unit form1, ok.
existe outras rotinas como alterar a imprresora padrão do windows na hora da impressão, mas é via codigo e rotina por
procedure um pouco mais complicado, já com o combobox acho que é mais simples pra vc.
quanto a sua pergunta usando o assingfile nunca usei junto com quickreport e vc mostra um comando:
Writeln(Print ,#27 + '&' + '0' + #12 + #48); //Abre a gaveta// aqui vc vê como adaptar para abrir gaveta. Writeln(Print ,#10 + #17); // Corte de papel// não precisa a impressora faz o corte automaticamente.
quando respondi que usando assingfile envia direto para impressora é porque eu uso ele , mas desta forma.
procedure TFrmPedidos.BtnMatricialClick(Sender: TObject);
const
cJustif = #27#97#51;
c10cpi = #18;
Var
Impressora:TextFile;
S: String;
VrUnit, VrTotal : String;
desc : String;
TotPed : String;
begin
AssignFile(Impressora,'LPT1:');
Rewrite(Impressora);
Writeln(impressora);
//imprimi cabeçalho
Writeln (impressora,''+'PONTO DO OLEO - AUTO MR');
Writeln (impressora,''+'RUA Alcides Inacio Da Silva N: 600 - A - INGA Betim - Mg');
Writeln (impressora,''+ ' Telefone:(31)3011-0961');
//Pula uma Linhas
Writeln(Impressora);
Writeln(impressora,#18''+'Pedido N '+FloatToStr(TbTemp_ItensNumPed.Value)+' '+'Condicoes Pagto: '+TbTemp_ItensCond_Pagto.Value+' '+'Vendedor: '+TbTemp_ItensNome_Vendedor.Value);
// Imprimi Cliente e tel cliente
Writeln(Impressora);
Writeln(impressora,#18''+'Cliente:'+ TbTemp_ItensCliente.Value+' '+'Telefone: '+TbTemp_ItensTel_Clie.Value);
//Pula uma linha
Writeln(Impressora);
{ Move o ponteiro de registro da tabela de Itens para o primeiro}
TbTemp_Itens.First;
//imprimi cabeçalho do pedido
Writeln (impressora,''+'------------------------------------------------------------------------------');
Writeln (impressora,''+'Codigo' +' Descricao'+' Qtd'+' Valor Unit.'+' Total');
Writeln(Impressora);
Writeln (impressora,''+'------------------------------------------------------------------------------');
{ Início do Laço}
While not (TbTemp_Itens.Eof) do
Begin
S := Format('%-13s%-32s%-5s',[TbTemp_ItensCodigoPro.AsString,TbTemp_ItensDescricao.Value,TbTemp_ItensQuantidade.AsString]);
VrUnit := FormatFloat('0.00',TbTemp_ItensVal_Unit.value);
VrTotal := FormatFloat('0.00',TbTemp_ItensTotal.Value);
while length(VrUnit) < 12 do //Colocar o tamanho q vc precisar
VrUnit := ' ' + VrUnit;
while length(VrTotal) < 14 do //Colocar o tamanho q vc precisar
VrTotal := ' ' + VrTotal;
S := S + VrUnit + VrTotal;
Writeln(impressora,S);
TbTemp_Itens.next;
end;
Desc := FrmPedidos.Edit1.Text;
TotPed := FrmPedidos.txtvalTot.Caption;
// pula linhas e imprimi o total do pedido, desconto,etc
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
Write(impressora,Format('%-56s',[ ' ']));
Writeln(impressora,''+'Desconto =>'+' '+Desc);
Write(impressora,Format('%-56s',[ ' ']));
Writeln(impressora,''+'Total =>'+' '+Totped);
////salto para corte impressora lx 300
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
CloseFile(impressora);
end;veja que não usei o assingprn, isto vai de programador para programador e nescessidade.
para cupom eu uso quickreport, ou fortes report.
Abs.
GOSTEI 0
Rodrigo Barra
14/11/2012
Gilvanio muito obrigado mesmo pela Atenção.
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
Gilvanio muito obrigado mesmo pela Atenção.
por nada amigo, espero que isto resolva a sua questão,
se vs observar, o uso do AssignFile no meu exemplo, e o que vc esta usando
faz o mesmo procedimento.
seu comando:
Assignfile (print, 'LPT1');
o meu :
AssignFile(Impressora,'LPT1:');
que dá o mesmo resultado, só mudou o nome , no meu impressora no seu print.
sendo que é declarado em uma variavel.
Var Impressora:TextFile;
no seu caso seria assim:
Var print:TextFile;
te passei uma rotina pronta pra uso usando impressão via LPT1.
basta adaptar a sua rotina.
É isto.
At+
GOSTEI 0
Rodrigo Barra
14/11/2012
beleza, foi o exemplo foi bem claro. vai me ajudar bastante.
GOSTEI 0
Marcio
14/11/2012
Poxa rapaz é mesmo, AssignPrn é mapeado pela impressora padrão do windows, ou seja,
é mapeado pelo gerenciamento de impressão do windows...
é que faz muito tempo que não mexo com impressão direta pelo AssignFile...
na época precisei usar o componente RDPrint não sei se conhece mas vale a pena,
tem configuração de letras (condensado, italico, etc..), escolha de portas e a
impressão é muito rápida é show de bola esse componente, ele é pago mas não é
muito caro não, dá uma pesquisada para ver como é...
falow
é mapeado pelo gerenciamento de impressão do windows...
é que faz muito tempo que não mexo com impressão direta pelo AssignFile...
na época precisei usar o componente RDPrint não sei se conhece mas vale a pena,
tem configuração de letras (condensado, italico, etc..), escolha de portas e a
impressão é muito rápida é show de bola esse componente, ele é pago mas não é
muito caro não, dá uma pesquisada para ver como é...
falow
GOSTEI 0
Rodrigo Barra
14/11/2012
Valeu pela dica Marcio.
GOSTEI 0
Janderson Souza
14/11/2012
Olá pessoal, so esclarecendo dúvidas, se puderem me responder!
Gilvanio, este código que você passou, o laço while not, vai imprimir todos os itens da venda, é isso que entendi?
E a questão do tamanho da página, pra determinar isso, é com estes códigos #27#97#51, tipo esse ai, que determina essas configurações em algumas impressoras?
Se alquem puder me responder, fico grato!!! ;)
Gilvanio, este código que você passou, o laço while not, vai imprimir todos os itens da venda, é isso que entendi?
E a questão do tamanho da página, pra determinar isso, é com estes códigos #27#97#51, tipo esse ai, que determina essas configurações em algumas impressoras?
Se alquem puder me responder, fico grato!!! ;)
GOSTEI 0
Gilvanio Gonçalves
14/11/2012
Sim código puro sem uso do Quick report , imprime na impressora padrão do windows, se tiver jato de tinta como padrão será nela
se tiver matricial como padrão será , que é o correto devido o código ser imprimir direto para impressora.
ja com chekbox defino sempre para matricial , finado padrão elano caso.
sendo para sempre imprimir em matricial , coloque a opção em imprimir em * jato de tinta?, * matricial?
responde sua pergunta o sim o que tiver dentro do laço. este parâmetros #27 #97 #51 definição de caracteres, fonte etc.
poste seu código que dou uma revisa para você.
se tiver matricial como padrão será , que é o correto devido o código ser imprimir direto para impressora.
ja com chekbox defino sempre para matricial , finado padrão elano caso.
sendo para sempre imprimir em matricial , coloque a opção em imprimir em * jato de tinta?, * matricial?
responde sua pergunta o sim o que tiver dentro do laço. este parâmetros #27 #97 #51 definição de caracteres, fonte etc.
poste seu código que dou uma revisa para você.
GOSTEI 0
Felipe
14/11/2012
alguem sabe aplicar esses comandos ASC em java ? pelo amor de Deus , faz dias que eu estou me batendo e nao consigo :/
GOSTEI 0