Fórum txt e matricial? #173745
07/08/2003
0
Pessoal
Estou precisando saber como fazer para imprimir um arquivo txt em uma impressora matricial, mais precisamente, impressão de nota fiscal.
Pretendo criar um txt e depois mandar imprimir, tem jeito?
Como faço pra posicionar os textos na linha e coluna desejado, algo
parecido com gotoxy(col,lin) do pascal???
Pesquisei no forum e achei bastante formas de impressão em matricial, mas acontece que gostaria de mais detalhes: se uso LTP1 ou GDI...
Enfim qualquer dica vai ser muito útil, estou sem saber por onde começar.
Estou precisando saber como fazer para imprimir um arquivo txt em uma impressora matricial, mais precisamente, impressão de nota fiscal.
Pretendo criar um txt e depois mandar imprimir, tem jeito?
Como faço pra posicionar os textos na linha e coluna desejado, algo
parecido com gotoxy(col,lin) do pascal???
Pesquisei no forum e achei bastante formas de impressão em matricial, mas acontece que gostaria de mais detalhes: se uso LTP1 ou GDI...
Enfim qualquer dica vai ser muito útil, estou sem saber por onde começar.
Maxdangelo
Curtir tópico
+ 0
Responder
Posts
07/08/2003
Joilson_gouveia
Estude esse exemplo e adapte-o as suas necessidades...
587 - Emissao de NF e boleto
Nota Fiscal (UTILIZEI O BITBTN)Ocódigo comessa abaixo.
------------------------------------------------------------------------------------------------------------------------------
procedure TFmPedidos.btNotaClick(Sender: TObject);
var
Valorbase:DOUBLE;
valoricms:DOUBLE;
CONTADOR:Integer;
IMPRESSORA:TextFile;
begin
{POSICIONA O PONTEIRO DA TABELA DE CLIENTES,
EM RELAÇÃO À TABELA DE PEDIDOS}
DmDados.tbClientes.FindKey([DMDADOS.Tbpedidosped_Cliente.Value]);
{Relaciona a variável impressora com a
lpt1: - Poderia ser LPT, COM1,// Servidor/impressora}
AssignFile(IMPRESSORA,´LPT1:´);
{abre a porta da impressão }
Rewrite(IMPRESSORA);
{envia caractere de controle para comprimir a impressão}
Write(IMPRESSORA);
{ Imprime o caractere ´x´ (marcando Nota de Saída) e salta para próxima linha}
Writeln(Impressora,Format(´¬80s´,[´x´]));
{ salta duas linhas}
Writeln(impressora);
Writeln(Impressora);
{ Imprime a string ´Vendas´, alinhado à esquerda´-´ dentro de uma área de quarenta caracteres}
Write(Impressora,Format(´¬-40s´,[´Vendas´]));
{ Imprime a string ´5.12´, e salta para próxima linha}
WriteLn(Impressora,Format(´¬10s´, [´5.12´]));
{ Salta duas linhas}
Writeln(impressora);
Writeln(Impressora);
{ ---- Impressão dos Dados do Consumidor-----}
{ Imprime a Razão Social, alinhado à esquerda dentro de uma área de 90 caracteres}
Write (Impressora,Format(´¬-90s´, [ dmdados.tbClientesCli_Razao.Value]));
{ Imprime a CGC, alinhado à esquerda dentro de umaárea de 30 caracteres}
Write(Impressora,Format(´¬-30s´, [dmdados.tbClientesCli_CGC.Value]));
{ Imprime a Data de Emissão, baseada na data atual e salta para próxima linha}
Writeln(Impressora,DatetoStr(Date));
{ Salta uma linha}
Writeln(Impressora);
{ Imprime Endereço,alinhado à esquerda´-´ dentro de uma área de 70 carcateres}
Write(Impressora,Format(´¬-70s´,[dmdados.tbClientesCli_Endereco.Value]));
{Imprime Bairro, dentro de uma área de 35 carcateres}
Write(Impressora,Format(´¬-35s´,[dmdados.tbClientesCli_Bairro.Value]));
{ Imprime CEP, dentro de uma área de 15 carcateres}
Write(Impressora,Format(´¬-15s´, [dmdados.tbClientesCli_CEP.Value]));
{Imprime a Data de Saída, baseada na Hora Atual e Salta para próxima Linha}
Writeln(Impressora,DatetoStr(Date));
{ Salta uma linha}
Writeln(Impressora);
{ Imprime Munícipio, dentro de uma área de 60 caracteres}
Write(Impressora, Format(´¬-60s´, [dmdados.tbClientesCli_Cidade.Value]));
{ Imprime DD+Telefone, dentro de uma área de 30 caracteres}
Write(Impressora,Format(´¬-30s´,[dmdados.tbClientesCli_DDD.Value+´ ´+ dmdados.tbClientesCli_Fone1.Value]));
{ Imprime Estado (UF), dentro de uma área de 5 caracteres}
Write(Impressora,Format(´¬-5s´,[dmdados.tbClientesCli_Estado.Value]));
{ Imprime Inscrição Estadual, dentro de uma área de 25 caracteres}
Write(Impressora,Format(´¬-25s´,[dmdados.tbClientesCli_Inscricao.value]));
{ Imprime a Hora de Saída, baseada na Hora Atual e Salta para próxima Linha}
Writeln(Impressora,TimetoStr(time));
{ Salta três linhas}
Writeln(Impressora);
Writeln(Impressora);
Writeln(Impressora);
{----- Fase de Emissão dos Itens da Nota -----}
{ Zero variáveis}
Valorbase:=0;
valoricms:=0;
{ Move o ponteiro de registro da tabela de Itens para o primeiro}
Dmdados.TbItens.First;
{ Início do Laço}
While not (Dmdados.tbItens.Eof) do
Begin
{ Imprime Código produto}
Write(Impressora,Format(´¬-15s´, [InttoStr(Dmdados.tbItensIT_Produto.Value)]));
{ Imprime Descrição do produto}
Write(Impressora,Format(´¬-68s´, [dmdados.TbitensProdutos.value]));
{ Imprime Quantidade Comercializada}
Write(Impressora,Format(´¬12.2n´,[Dmdados.tbItensIt_Quantidade.value]));
{ Imprime Preço Unitário produto}
Write(Impressora,Format(´¬15.2m´,[dmdados.tbitensit_valor.value]));
{ Imprime o valor Total do Item e salta uma linha}
Writeln(Impressora,Format(´&15.2f´, [dmdados.tbItensValorItem.Value]));
{ Soma o valor Base de Cálculo do ICMS}
Valorbase:=ValorBase + dmdados.tbItensValorItem.Value;
{ Próximo Item}
Dmdados.Tbitens.next;
end;
{ laço de Itens}
{ Salta o núemro de linhas necessárias para completar o espaço restante de itens}
For Contador:= 1 to (20- dmdados.tbItens.recordCount)do
Writeln(Impressora);
{ Salta duas Linhas}
Writeln(Impressora);
Writeln(Impressora);
{ Imprime o valor total dos produtos e salta uma linha}
Writeln(Impressora,Format(´¬120.2f´,[ValorBase]));
{ Salta duas linhas}
Writeln(Impressora);
Writeln(Impressora);
{ Cálculo do Imposto - baseada na Alíquota de 12¬}
valoricms:=(Valorbase*0.12);
{ Imprime Valor base}
Write(Impressora,Format(´¬30.2f´,[Valorbase]));
{ Imprime Valor ICMS e salta ´p/ próxima linha}
Write(Impressora, Format(´¬30.2f´,[ ValorICMS]));
{ Salta uma linha}
Writeln(Impressora);
{ Imprime o valor total da Nota e salta uma linha}
Writeln(Impressora,Format(´¬120.2f´,[Valorbase]));
{ Salta duas linhas}
Writeln(Impressora);
Writeln(Impressora);
{ Imprime informações transportador}
Writeln(Impressora,Format(´¬-30s´, [´o mesmo´]));
{ salta tr6es Linhas}
Writeln(Impressora);
Writeln(Impressora);
Writeln(Impressora);
{ Fecha a porta de impressão}
System.Close(Impressora);
end; { final da procedure}
BOLETA BANCARIA
procedure TFmGerRec.BtBoletaClick(Sender: TObject);
Var
Impressora:TextFile;
begin
AssignFile(Impressora,´LPT1:´);
Rewrite(Impressora);
Writeln(impressora);
//Imprime Local de pagamento
Write(impressora,Format(´¬-50s´,[´ (PAGAVEL EM QUALQUER BANCO ATE O VENCIMENTO)´]));
//Imprime Data Vencto e pula para próxima linha
Writeln (impressora,Format(´¬-20s´,[´´+DatetoStr(DmDados.TbcontasRecRec_DataVencto.Value)]));
//pula três linhas
Writeln(Impressora);
Writeln(impressora);
Writeln(impressora);
//Imprime Data de Emissão e Número Documento e salta duas linhas
Writeln(impressora,Format(´¬-50s´,[´´+DatetoStr(DmDados.TbcontasRecRec_DataEmissao.Value)]));
Writeln(impressora,Format(´¬-52s´,[´´+InttoStr(DmDados.TbcontasRecRec_Numero.Value)]));
Writeln(impressora);
//Imprime valor do Documento e pula p/ Próxima linha
Write(impressora, Format(´¬-55s´,[ ´ ´]));
Writeln(impressora, Format(´¬-8.2m´,[DmDados.TbContasRecRec_Valor.Value]));
//Pula duas linhas
Writeln(impressora);
Writeln(impressora);
//Imprime informações de Responsabilidade do Cedente
Writeln(impressora, Format(´¬-50s´,[´ Neste Espaco Voce pode imprimir o Texto´]));
Writeln(impressora, Format(´¬-50s´,[´ De Responsabilidade do Cedente, comum em ´]));
Writeln(impressora, Format(´¬-50s´,[´ Diversos Bancos,Ex: ´]));
Writeln(impressora, Format(´¬-50s´,[´ -Cobrar Juros de 10¬/Mes Apos Vencimento´]));
// Pula duas Linhas
WriteLn(impressora);
Writeln(impressora);
//imprime informações do Sacado
Writeln(impressora, Format(´¬-50s´,[´´+DmDados.TbcontasRecRazao.Value+´-CGC/CPF´+Dmdados.TbContasRecCgc.Value]));
Writeln(impressora, Format(´¬-50s´,[´´+DmDados.TbContasRecEndereco.Value]));
Writeln(impressora, Format(´¬-50s´,[´ CEP´+DmDados.TbContasRecCEP.Value+´´+Dmdados.TbContasRecCidade.Value+´´+ Dmdados.TbContasRecEstado.Value]));
//Pula três linhas
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
CloseFile(impressora);
end;
587 - Emissao de NF e boleto
Nota Fiscal (UTILIZEI O BITBTN)Ocódigo comessa abaixo.
------------------------------------------------------------------------------------------------------------------------------
procedure TFmPedidos.btNotaClick(Sender: TObject);
var
Valorbase:DOUBLE;
valoricms:DOUBLE;
CONTADOR:Integer;
IMPRESSORA:TextFile;
begin
{POSICIONA O PONTEIRO DA TABELA DE CLIENTES,
EM RELAÇÃO À TABELA DE PEDIDOS}
DmDados.tbClientes.FindKey([DMDADOS.Tbpedidosped_Cliente.Value]);
{Relaciona a variável impressora com a
lpt1: - Poderia ser LPT, COM1,// Servidor/impressora}
AssignFile(IMPRESSORA,´LPT1:´);
{abre a porta da impressão }
Rewrite(IMPRESSORA);
{envia caractere de controle para comprimir a impressão}
Write(IMPRESSORA);
{ Imprime o caractere ´x´ (marcando Nota de Saída) e salta para próxima linha}
Writeln(Impressora,Format(´¬80s´,[´x´]));
{ salta duas linhas}
Writeln(impressora);
Writeln(Impressora);
{ Imprime a string ´Vendas´, alinhado à esquerda´-´ dentro de uma área de quarenta caracteres}
Write(Impressora,Format(´¬-40s´,[´Vendas´]));
{ Imprime a string ´5.12´, e salta para próxima linha}
WriteLn(Impressora,Format(´¬10s´, [´5.12´]));
{ Salta duas linhas}
Writeln(impressora);
Writeln(Impressora);
{ ---- Impressão dos Dados do Consumidor-----}
{ Imprime a Razão Social, alinhado à esquerda dentro de uma área de 90 caracteres}
Write (Impressora,Format(´¬-90s´, [ dmdados.tbClientesCli_Razao.Value]));
{ Imprime a CGC, alinhado à esquerda dentro de umaárea de 30 caracteres}
Write(Impressora,Format(´¬-30s´, [dmdados.tbClientesCli_CGC.Value]));
{ Imprime a Data de Emissão, baseada na data atual e salta para próxima linha}
Writeln(Impressora,DatetoStr(Date));
{ Salta uma linha}
Writeln(Impressora);
{ Imprime Endereço,alinhado à esquerda´-´ dentro de uma área de 70 carcateres}
Write(Impressora,Format(´¬-70s´,[dmdados.tbClientesCli_Endereco.Value]));
{Imprime Bairro, dentro de uma área de 35 carcateres}
Write(Impressora,Format(´¬-35s´,[dmdados.tbClientesCli_Bairro.Value]));
{ Imprime CEP, dentro de uma área de 15 carcateres}
Write(Impressora,Format(´¬-15s´, [dmdados.tbClientesCli_CEP.Value]));
{Imprime a Data de Saída, baseada na Hora Atual e Salta para próxima Linha}
Writeln(Impressora,DatetoStr(Date));
{ Salta uma linha}
Writeln(Impressora);
{ Imprime Munícipio, dentro de uma área de 60 caracteres}
Write(Impressora, Format(´¬-60s´, [dmdados.tbClientesCli_Cidade.Value]));
{ Imprime DD+Telefone, dentro de uma área de 30 caracteres}
Write(Impressora,Format(´¬-30s´,[dmdados.tbClientesCli_DDD.Value+´ ´+ dmdados.tbClientesCli_Fone1.Value]));
{ Imprime Estado (UF), dentro de uma área de 5 caracteres}
Write(Impressora,Format(´¬-5s´,[dmdados.tbClientesCli_Estado.Value]));
{ Imprime Inscrição Estadual, dentro de uma área de 25 caracteres}
Write(Impressora,Format(´¬-25s´,[dmdados.tbClientesCli_Inscricao.value]));
{ Imprime a Hora de Saída, baseada na Hora Atual e Salta para próxima Linha}
Writeln(Impressora,TimetoStr(time));
{ Salta três linhas}
Writeln(Impressora);
Writeln(Impressora);
Writeln(Impressora);
{----- Fase de Emissão dos Itens da Nota -----}
{ Zero variáveis}
Valorbase:=0;
valoricms:=0;
{ Move o ponteiro de registro da tabela de Itens para o primeiro}
Dmdados.TbItens.First;
{ Início do Laço}
While not (Dmdados.tbItens.Eof) do
Begin
{ Imprime Código produto}
Write(Impressora,Format(´¬-15s´, [InttoStr(Dmdados.tbItensIT_Produto.Value)]));
{ Imprime Descrição do produto}
Write(Impressora,Format(´¬-68s´, [dmdados.TbitensProdutos.value]));
{ Imprime Quantidade Comercializada}
Write(Impressora,Format(´¬12.2n´,[Dmdados.tbItensIt_Quantidade.value]));
{ Imprime Preço Unitário produto}
Write(Impressora,Format(´¬15.2m´,[dmdados.tbitensit_valor.value]));
{ Imprime o valor Total do Item e salta uma linha}
Writeln(Impressora,Format(´&15.2f´, [dmdados.tbItensValorItem.Value]));
{ Soma o valor Base de Cálculo do ICMS}
Valorbase:=ValorBase + dmdados.tbItensValorItem.Value;
{ Próximo Item}
Dmdados.Tbitens.next;
end;
{ laço de Itens}
{ Salta o núemro de linhas necessárias para completar o espaço restante de itens}
For Contador:= 1 to (20- dmdados.tbItens.recordCount)do
Writeln(Impressora);
{ Salta duas Linhas}
Writeln(Impressora);
Writeln(Impressora);
{ Imprime o valor total dos produtos e salta uma linha}
Writeln(Impressora,Format(´¬120.2f´,[ValorBase]));
{ Salta duas linhas}
Writeln(Impressora);
Writeln(Impressora);
{ Cálculo do Imposto - baseada na Alíquota de 12¬}
valoricms:=(Valorbase*0.12);
{ Imprime Valor base}
Write(Impressora,Format(´¬30.2f´,[Valorbase]));
{ Imprime Valor ICMS e salta ´p/ próxima linha}
Write(Impressora, Format(´¬30.2f´,[ ValorICMS]));
{ Salta uma linha}
Writeln(Impressora);
{ Imprime o valor total da Nota e salta uma linha}
Writeln(Impressora,Format(´¬120.2f´,[Valorbase]));
{ Salta duas linhas}
Writeln(Impressora);
Writeln(Impressora);
{ Imprime informações transportador}
Writeln(Impressora,Format(´¬-30s´, [´o mesmo´]));
{ salta tr6es Linhas}
Writeln(Impressora);
Writeln(Impressora);
Writeln(Impressora);
{ Fecha a porta de impressão}
System.Close(Impressora);
end; { final da procedure}
BOLETA BANCARIA
procedure TFmGerRec.BtBoletaClick(Sender: TObject);
Var
Impressora:TextFile;
begin
AssignFile(Impressora,´LPT1:´);
Rewrite(Impressora);
Writeln(impressora);
//Imprime Local de pagamento
Write(impressora,Format(´¬-50s´,[´ (PAGAVEL EM QUALQUER BANCO ATE O VENCIMENTO)´]));
//Imprime Data Vencto e pula para próxima linha
Writeln (impressora,Format(´¬-20s´,[´´+DatetoStr(DmDados.TbcontasRecRec_DataVencto.Value)]));
//pula três linhas
Writeln(Impressora);
Writeln(impressora);
Writeln(impressora);
//Imprime Data de Emissão e Número Documento e salta duas linhas
Writeln(impressora,Format(´¬-50s´,[´´+DatetoStr(DmDados.TbcontasRecRec_DataEmissao.Value)]));
Writeln(impressora,Format(´¬-52s´,[´´+InttoStr(DmDados.TbcontasRecRec_Numero.Value)]));
Writeln(impressora);
//Imprime valor do Documento e pula p/ Próxima linha
Write(impressora, Format(´¬-55s´,[ ´ ´]));
Writeln(impressora, Format(´¬-8.2m´,[DmDados.TbContasRecRec_Valor.Value]));
//Pula duas linhas
Writeln(impressora);
Writeln(impressora);
//Imprime informações de Responsabilidade do Cedente
Writeln(impressora, Format(´¬-50s´,[´ Neste Espaco Voce pode imprimir o Texto´]));
Writeln(impressora, Format(´¬-50s´,[´ De Responsabilidade do Cedente, comum em ´]));
Writeln(impressora, Format(´¬-50s´,[´ Diversos Bancos,Ex: ´]));
Writeln(impressora, Format(´¬-50s´,[´ -Cobrar Juros de 10¬/Mes Apos Vencimento´]));
// Pula duas Linhas
WriteLn(impressora);
Writeln(impressora);
//imprime informações do Sacado
Writeln(impressora, Format(´¬-50s´,[´´+DmDados.TbcontasRecRazao.Value+´-CGC/CPF´+Dmdados.TbContasRecCgc.Value]));
Writeln(impressora, Format(´¬-50s´,[´´+DmDados.TbContasRecEndereco.Value]));
Writeln(impressora, Format(´¬-50s´,[´ CEP´+DmDados.TbContasRecCEP.Value+´´+Dmdados.TbContasRecCidade.Value+´´+ Dmdados.TbContasRecEstado.Value]));
//Pula três linhas
Writeln(impressora);
Writeln(impressora);
Writeln(impressora);
CloseFile(impressora);
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)