Fórum [rfps] --gt; Imprimir Condensado com QR #184998
29/09/2003
0
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
Curtir tópico
+ 0Posts
29/09/2003
Rfpsatin
Gostei + 0
29/09/2003
Marcelo Saviski
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
Gostei + 0
29/09/2003
Rfpsatin
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
Gostei + 0
29/09/2003
Aroldo Zanela
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;
Gostei + 0
29/09/2003
Rfpsatin
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?
Gostei + 0
29/09/2003
Aroldo Zanela
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;
Gostei + 0
29/09/2003
Rfpsatin
Muito Obrigado.
Cordialmente
Ricardo
Gostei + 0
30/09/2003
Rfpsatin
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)