Fórum [rfps] --gt; Imprimir Condensado com QR #184998

29/09/2003

0

Pessoal, preciso de uma grande dica.


Como fazer p/ q meus relatórios saiam condesados?

Manjam, aquele esquema de sair condensadinho q nem no DOS?


Muito Obrigado a quem puder ajudar


Rfpsatin

Rfpsatin

Responder

Posts

29/09/2003

Rfpsatin

Ae pessoal, ninguém aqui usa o QR p/ imprimir naquelas impressoras tipo Bematech(só q não fiscais) ou na Epson (com a bobina pequena tipo impr. fiscal)???????????????


Responder

Gostei + 0

29/09/2003

Marcelo Saviski

Com o VB aqui no estágio, os caras fizeram um esquema que salva em uma Arquivo Temporário de texto

na 1º linha vai um comando para isso, imprimir condensado, tem outros para pular página, linha, etc...

Tem uma Base de Dados com os comandos definidos para cada tipo de impressora, se for isso que vc presisa, posso tentar te ajudar com alguma coisa em relação a isso


Responder

Gostei + 0

29/09/2003

Rfpsatin

Olha, To aceitando qquer coisa ;-)

A idéia é interessante, c vc puder me dar uma mão agradeço.

meu icq, caso vc queira entrar em contato é:
165904225

e-mail: rfpsatin@yahoo.com.br

cordialmente:

Ricardo


Responder

Gostei + 0

29/09/2003

Aroldo Zanela

Colega,

Qualquer semelhança com clipper é mera coincidência:

procedure TfrmPDV.ImprimirPedido;
var Arquivo: TextFile;
Linha: String;
    Sp: String;
    GrandeTotal: Currency;
    QtdeTotal: Double;
    Imprimir: String;
begin
tbPedDetalhe.First;
Sp:= ´  ´;

  GrandeTotal:= 0.00;// Total em dinheiro
  QtdeTotal:= 0;// Quantidade de itens no total

AssignFile(Arquivo,Impressora);
  ReWrite(Arquivo);
  Write(Arquivo,#15); // Modo condensado
  Imprimir:= PadR(´ORCAMENTO NUMERO: ´ + tbPedMestreNUMERO.AsString,51,´ ´) +
               ´DATA: ´ + DateToStr(Date) +
               ´ HORA: ´ + TimeToStr(Time);
  WriteLn(Arquivo, Imprimir);
  WriteLn(Arquivo, Replicate(´-´, 80));
  WriteLn(Arquivo, ´NOME DO CLIENTE´);
  WriteLn(Arquivo, ´ENDEREÇO - CIDADE - UF´);
  WriteLn(Arquivo, ´TELEFONE: ´);
  WriteLn(Arquivo, ´VENDEDOR: ´ + tbs.qVendedorNOME.Value );

  WriteLn(Arquivo,Replicate(´=´,80));
  WriteLn(Arquivo,´   QTDE UN CODIGO DESCRICAO DA MERCADORIA                    VLR UNIT  SUB-TOTAL´);
  WriteLn(Arquivo,´------- -- ------ ---------------------------------------- ---------- ----------´);

while not tbPedDetalhe.Eof do
  begin

  GrandeTotal:= GrandeTotal + tbPedDetalheSUBTOTAL.Value;
    QtdeTotal:= QtdeTotal + tbPedDetalheQTDE.Value;

  Linha:= PadL(tbPedDetalheQTDE.AsString,7,´ ´) + ´ ´ +
    PadR(tbPedDetalheUNIDADE.AsString,2,´ ´) + ´ ´ +
              PadR(tbPedDetalhePRODUTO.AsString,06,´ ´) + ´ ´ +
              PadR(tbPedDetalheDESCRICAO.Value,40,´ ´) + ´ ´ +
              PadL(FloatToStrF(tbPedDetalheUNITARIO.Value,ffNumber,10,2),10,´ ´) + ´ ´ +
              PadL(FloatToStrF(tbPedDetalheSUBTOTAL.Value,ffNumber,10,2),10,´ ´);
    WriteLn(Arquivo,Linha);
  tbPedDetalhe.Next;
  end;

  WriteLn(Arquivo,Replicate(´=´,80));
  Imprimir:= PadL(FloatToStr(QtdeTotal),07,´ ´)+PadL(´TOTAL GERAL = ´+FloatToStrF(GrandeTotal,ffNumber,15,2),73,´ ´);
  WriteLn(Arquivo,Imprimir);
  if tbPedMestreDESCONTO.Value>0 then
  begin
  Imprimir:= PadL(´TOTAL DESCONTO = ´+
    FloatToStrF(tbPedMestreDESCONTO.Value,ffNumber,15,2),80,´ ´);
  WriteLn(Arquivo,Imprimir);
  end;
  Imprimir:= PadL(´TOTAL LIQUIDO = ´+
                FloatToStrF(GrandeTotal-tbPedMestreDESCONTO.Value,ffNumber,15,2),80,´ ´);
  WriteLn(Arquivo,Imprimir);
  WriteLn(Arquivo,Replicate(´-´,80));
  WriteLn(Arquivo,´CNPJ/CNPF: ´ + tbs.qClienteCPF.DisplayText);
  WriteLn(Arquivo,´NOME.....: ´ + tbs.qClienteDESCRICAO.Value);
  WriteLn(Arquivo,´ENDEREÇO.: ´ + tbs.qClienteENDERECO.Value);
  WriteLn(Arquivo,´CIDADE...: ´ + tbs.qClienteCIDADE.Value + ´ BAIRRO: ´ + tbs.qClienteBAIRRO.Value);
  WriteLn(Arquivo,´CEP......: ´ + tbs.qClienteCEP.Value + ´ UF: ´ + tbs.qClienteESTADO.Value + ´ FONE: ´ + tbs.qClienteTELRES.Value);
  WriteLn(Arquivo,Replicate(´-´,80));
  WriteLn(Arquivo,´                 ----------AGRADECEMOS A PREFERENCIA----------´);
  WriteLn(Arquivo,´                 -------S E M   V A L O R   F I S C A L-------´);
  Write(Arquivo,#12);
  CloseFile(Arquivo);
end;



Responder

Gostei + 0

29/09/2003

Rfpsatin

Aff. ;-)

Bem, pelo q percebi vc tem algumas rotinas que no geral usa-as p/ alinhar os campos e tudo + né.

Vc poderia fornecer elas p/ que possamos estudar e usar?


Responder

Gostei + 0

29/09/2003

Aroldo Zanela

Colega,

Function PadL( Expressao: String; Tamanho: Integer; Caracter : String ) : String;
var   nComprimento, nFalta : Integer;
      cPreenche : String;
Begin
   nComprimento   := Length( Expressao );
   nFalta         := Tamanho - nComprimento;
   cPreenche      := Replicate( Caracter, nFalta );
   Result         := cPreenche + Expressao;
End;
function PadC( Expressao: String; Tamanho: Integer; Caracter: String ): String;
var nTamanho, nEsquerda, nDireita: Integer;
cEsquerda, cDireita: String;
begin
nTamanho:= Length(Expressao);
  nEsquerda:= Trunc((Tamanho-nTamanho)/2);
  nDireita:= Tamanho - (nTamanho+nEsquerda);
  cEsquerda:= Replicate(Caracter,nEsquerda);
  cDireita:= Replicate(Caracter,nDireita);
  Result:= cEsquerda+Expressao+cDireita;
end;

Function PadR( Expressao: String; Tamanho: Integer; Caracter : String ) : String;
var   nComprimento, nFalta : Integer;
      cPreenche : String;
Begin
   nComprimento   := Length( Expressao );
   nFalta         := Tamanho - nComprimento;
   cPreenche      := Replicate( Caracter, nFalta );
   Result         := Expressao + cPreenche;
End;




Responder

Gostei + 0

29/09/2003

Rfpsatin

Aroldo, muito obrigado, vou estar testando, qq coisa posto outra mensagem aqui.

Muito Obrigado.

Cordialmente

Ricardo


Responder

Gostei + 0

30/09/2003

Rfpsatin

Aroldo, olá, estou fazendo um pequeno teste.

Bem, é o seguinte.: Lembra-se deste código, vou colocar aqui apenas uma parte.

var Arquivo: TextFile;
Linha: String;
Sp: String;
GrandeTotal: Currency;
QtdeTotal: Double;
Imprimir: String;
begin
Sp := ´ ´;

GrandeTotal := 0.00; // Total em dinheiro
QtdeTotal := 0; // Quantidade de itens no total

AssignFile(Arquivo,Impressora);

ReWrite(Arquivo);

Write(Arquivo,#15); // Modo condensado

Imprimir := PadR(´ORCAMENTO NUMERO: ´ + ´2225´,51,´ ´) +
´DATA: ´ + DateToStr(Date) +
´ HORA: ´ + TimeToStr(Time);

Bem, estou usando esta parte p/ simular uma impressão.

Dei um assign num arquive texto em disco, assim:
AssignFile(Arquivo,´c:\teste.txt´);

e gerei as informações nele. Bem, gravei e depois imprimi via Notepad. O fato é q ele não saiu comprimido.

Então mudei a forma de gravar, gravei direto num arquivo texto na impressora da seguinte forma;

var Arquivo: TextFile;

AssignPrn(Arquivo);

Bem, imprimui bem, contudo não esta saindo comprimido.

mudei a seguinte linha tua da seguinte forma:
Write(Arquivo,#15); // Modo condensado
para Write(Arquivo,chr(27)+chr(15)); // Modo condensado

ps. minha impressora é uma epson action printer 2000.

Desta forma ela ta sainda comprimido, (não apenas as 80 colunas).

mudei tb o final da seguinte forma:
de:
Write(Arquivo,12);
para:
Write(Arquivo,chr(27)+chr(80)+chr(18));

Bem, Ele ta saindo impresso numa fonte comum, tipo arial, então mudei a fonte da impressora da seguinte forma:

AssignPrn(Arquivo);
ReWrite(Arquivo);

printer.Canvas.Font.Name := ´Courier New´;
printer.Canvas.Font.Size := 10;

Bem, não sei se este é o tamanho melhor de fonte a ser usada e tb se este é o melhor tipo de fonte tb.

Bem, esta saindo comprimido desta forma, gostaria de saber se estou fazendo a coisa certa e c vc poderia me ajudar a solucionar as dúvidas acima.

Outra coisa, vc sabe como posso fazer p/ que a impressão saia RÁPIDA assim como nos programas DOS, feitos p.ex. em clipper?

muito obrigado colega, q Deus abençoe.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar