Imprimir uma função que grava txt

Delphi

12/06/2012

Boa tarde galeratenho esse codigo de um sistema, que peguei pra dar manutenção, preciso fazer essa função imprimir
em vez de gravar em txt. como aqui......impressao.SaveToFile(C:\impressaoCastelo.txt);
queria mandar isso direto pra uma impressora generic.

Alguém pode me ajudar?????????????



//Realizar impressão para o cliente
procedure TfrmPreVenda.imprimeCastelo;
const
  cJustif     = #27#97#51;
  cFJustif     = #27#97#52;
  cEject      = #12;

  { Tamanho da fonte }
  c10cpi      = #18;
  c12cpi      = #27#77;
  c17cpi      = #15;
  cIExpandido = #14;
  cFExpandido = #20;
  { Formatação da fonte }
  cINegrito   = #27#71;
  cFNegrito   = #27#72;
  cIItalico   = #27#52;
  cFItalico   = #27#53;
var
 F:TextFile;
 ini : TLerINI;
 i, parcela : Integer;
 cabecalho, listaItem, pagamentos, impressao : TStringList;
 titulo, porta, obs : String;
 b : TBancoDados;
begin
  cabecalho   := TStringList.Create;
  listaItem   := TStringList.Create;
  pagamentos  := TStringList.Create;
  impressao   := TStringList.Create;

  try
   if tela = 1 then
    begin
      titulo := ORCAMENTO;
    end
   else
    begin
      titulo := PRE VENDA;
    end;

  b.consultClientes(codCli);

  with DMPrinc do
   begin
    cabecalho.Add(FormatDateTime(DD/MM/YYYY, Date)+     +FormatDateTime(hh:mm, Time));
    cabecalho.Add(edtNroPedido.Text);
    cabecalho.Add(edtVendedor.Text);
    cabecalho.Add(Copy(CDSClientesNOME.AsAnsiString,1,30)
                  +     +
                  CDSClientesCODIGO.AsAnsiString
                  +     +
                  FormatDateTime(DD/MM/YYYY, Date));
    cabecalho.Add(Copy(CDSClientesENDERECO.AsAnsiString,1,30)
                  +     +
                  Copy(CDSClientesBAIRRO.AsAnsiString,1,20)
                  +     +
                  Copy(CDSClientesTELEFONE.AsAnsiString,1,16));

   if CDSClientesFISICA_JURIDICA.AsAnsiString = Física then
    begin
    cabecalho.Add(Copy(CDSClientesCIDADE.AsAnsiString,1,20)
                  +     +
                  CDSClientesUF.AsAnsiString
                  +     +
                  Copy(CDSClientesCPF.AsAnsiString,1,20)
                  +     +
                  Copy(CDSClientesRG.AsAnsiString,1,20)
                   );
    end
   else
    begin
    cabecalho.Add(Copy(CDSClientesCIDADE.AsAnsiString,1,20)
                  +     +
                  CDSClientesUF.AsAnsiString
                  +     +
                  Copy(CDSClientesCPF.AsAnsiString,1,20)
                  +     +
                  Copy(CDSClientesRG.AsAnsiString,1,20)
                   );
    end;

    cabecalho.Add(Copy(CDSClientesENDERECO_COBRANCA.AsAnsiString,1,30)
                  +     +
                  Copy(CDSClientesBAIRRO_COBRANCA.AsAnsiString,1,20)
                  +     +
                  Copy(CDSClientesTELEFONE_COBRANCA.AsAnsiString,1,16));


    cabecalho.Add(Copy(CDSClientesENDERECO_ENTREGA.AsAnsiString,1,30)
                  +     +
                  Copy(CDSClientesBAIRRO_ENTREGA.AsAnsiString,1,20)
                  +     +
                  Copy(CDSClientesTELEFONE_ENTREGA.AsAnsiString,1,16));

    for i := 0 to memoObs.Lines.Count - 1 do
     begin
       obs := obs +  +memoObs.Lines.Strings[i];
     end;

   cabecalho.Add(Copy(obs,1,60));

    CDSDadosGrid.First;
     while not CDSDadosGrid.Eof do
      begin
       listaItem.Add(StringOfChar( ,10 - Length(CDSDadosGridCODNOME.AsAnsiString))+ CDSDadosGridCODNOME.AsAnsiString+ +
                     StringOfChar( ,8 - Length(CDSDadosGridQTDE.AsAnsiString))+CDSDadosGridQTDE.AsAnsiString+
                     StringOfChar( ,5 - Length(CDSDadosGridUNI.AsAnsiString))+CDSDadosGridUNI.AsAnsiString+
                     StringOfChar( ,35 - Length(Copy(CDSDadosGridDESCRICAO.AsAnsiString,1,30)))+Copy(CDSDadosGridDESCRICAO.AsAnsiString,1,30)+
                     StringOfChar( ,15 - Length(FormatFloat(###,##0.00,CDSDadosGridVALUNIT.AsFloat)))+FormatFloat(###,##0.00,CDSDadosGridVALUNIT.AsFloat)+
                     StringOfChar( ,15 - Length(FormatFloat(###,##0.00,CDSDadosGridDAVAL.AsFloat)))+FormatFloat(###,##0.00,CDSDadosGridDAVAL.AsFloat)+
                     StringOfChar( ,15 - Length(FormatFloat(###,##0.00,CDSDadosGridVALTOTAL.AsFloat)))+FormatFloat(###,##0.00,CDSDadosGridVALTOTAL.AsFloat)
                 );
       CDSDadosGrid.Next;
      end;

    parcela := 0;
    CDSPagamento.First;
    while not CDSPagamento.Eof do
     begin
      parcela := parcela + 1;
      CDSPagamento.Next;
     end;

   pagamentos.Add(IntToStr(parcela)+ X );
   pagamentos.Add(lblSubTotal.Caption);
   pagamentos.Add(edtTotal.Text);

   castelo(cabecalho,listaItem,pagamentos);

   impressao.Add(cabecalho.Text);
   impressao.Add(listaItem.Text);
   impressao.Add(pagamentos.Text);
   impressao.SaveToFile(C:\impressaoCastelo.txt);


   end;

  except

  end;
end;
Guilherme

Guilherme

Curtidas 0

Respostas

Deivison Melo

Deivison Melo

12/06/2012

Seria algo como:

AssignPrn(c:\seu_arquivo_txt.txt);
GOSTEI 0
Guilherme

Guilherme

12/06/2012

Mas não quero imprimir o txt, eu quero que no lugar de salver ele
imprime direto na impressora
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2012

Você tem uma variável F do tipo TextFile. Basta associá-la à porta LPT1 e passar a escrever direto nela.
GOSTEI 0
Guilherme

Guilherme

12/06/2012

Você tem uma variável F do tipo TextFile. Basta associá-la à porta LPT1 e passar a escrever direto nela.



Pode me dar um exemplo????
acho que não entendi muito bem!!!!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2012

Testa o seguinte;
var
P : TextFile;
begin
AssignFile(P, ´LPT1´);
ReWrite(P);
Writeln(P, ´Testando impressão...´);
Writeln(Q, ´E´+#13);
CloseFile(P);
end;


O código é autoexplicativo.
GOSTEI 0
Guilherme

Guilherme

12/06/2012

Vou testar, agora entendi!!!!!!!!!!!!
obrigado!!!!!!!!!
GOSTEI 0
POSTAR