entanglement obrigado pela ajuda.
O que ocorre é o seguinte: O programa em Delphi roda muito bem. Cou postar um trecho do código em delphi.
[code]procedure TfrmImprime.Imprimir;
var
nOriginX : integer;
nOriginY : integer;
sBuffer : string;
fsSaida : TFileStream;
CodBarras : String;
nTotalDebitos : real;
nCounter : integer;
nWidth : integer;
fsFormFile : TFileStream;
fsFormFont : TFileStream; {declaração da variável para utilização das fontes}
sTemp, codEdificio, sFormDir, BancoD : string;
nStartForm, nEndForm : integer;
nResolut : integer;
deslocamento : integer;
nControle, npaginas, contadorArquivos,contadorRota : integer;
lotes : array of TLotesRec;
idProduto, sNomeArquivo, sModeloCarta, pathFormFrente, pathFormVerso, sRota : string;
const
aCodBarras: array[0…9] of string = (‘00110’, ‘10001’, ‘01001’, ‘11000’, ‘00101’, ‘10100’, ‘01100’, ‘00011’, ‘10010’, ‘01010’);
begin
//Buscando Informações para Gerar a Ordem de Serviço
with adsRelatorio do
begin
try
Close;
CommandText := 'select nome_arquivo, count(nome_arquivo) as Quantidade ‘+
’ from clientes group by nome_arquivo order by nome_arquivo’;
Open;
//Inicializando variaveis para Gerar a Ordem de Serviço
SetLength(lotes,RecordCount);
for contadorRota:=0 to (RecordCount -1) do
begin
sRota := FieldByName('nome_Arquivo').AsString;
while (Pos('.', sRota) > 0) do
System.Delete(sRota, Pos('.', sRota), 1);
while (Pos(' ', sRota) > 0) do
System.Delete(sRota, Pos(' ', sRota), 1);
lotes[contadorRota].descricao := sRota;//Copy(sRota, 1, 5) + Copy(sRota, 9, Length(SRota) - 8);
lotes[contadorRota].quantidade := FieldByName('Quantidade').AsInteger;
Next;
end;
finally
Close;
end;
end;
//Gerando a Ordem de Serviço
if (chbGerarOS.Checked) then
begin
idProduto := ‘492’; //Codigo do Produto;
GerarOrdemServico (idProduto,lotes);
end;
with TADODataSet.Create(self) do
begin
Connection := adoBPD;
CommandText := ‘SELECT nome_arquivo FROM clientes GROUP BY nome_arquivo ORDER BY nome_arquivo’;
Open;
while not EOF do
begin
sRota := Fields[0].AsString;
adsClientes.Close;
adsClientes.CommandText := 'select * from clientes where nome_arquivo = :arquivo order by cep_destinatario';
adsClientes.Parameters[0].Value := sRota;
adsClientes.Open;
Next;
deslocamento :=0;
nControle := 1;
Screen.Cursor := crHourGlass;
System.Delete(sRota,Pos('.', sRota),1);
fsSaida := TFileStream.Create(Srota +'.pcl', fmCreate);
sTemp := #27'&f0y0x0S'#27'&f1s1x10X'#27'&f1y0x0S'#27'&f1s1x10X'#27'&f2y0x0S'#27'&f1s1x10X';
if feFormFrente.FileName <> '' then
begin
try
fsFormFile := TFileStream.Create(feFormFrente.FileName, fmOpenRead or fmShareDenyWrite );
SetLength( sBuffer, 8192 );
nCounter := 8192;
nStartForm := -1;
nEndForm := -1;
sTemp := '';
nResolut := 300;
while nCounter > 0 do
begin
nCounter := fsFormFile.Read( pointer(sBuffer)^, 8192);
if Pos(#27'&l0E',sTemp+Copy(sBuffer,1,nCounter)) > 0 then
nStartForm := fsFormFile.Position-nCounter+Pos(#27'&l0E',sTemp+Copy(sBuffer,1,nCounter))-1-Length(sTemp);
if Pos(#27'*t600R',sTemp+Copy(sBuffer,1,nCounter)) > 0 then
nResolut := 600
else if Pos(#27'*t300R',sTemp+Copy(sBuffer,1,nCounter)) > 0 then
nResolut := 300;
if Pos(#27'&l1X'#12,sTemp+Copy(sBuffer,1,nCounter)) > 0 then
begin
nEndForm := fsFormFile.Position-nCounter+Pos(#27'&l1X'#12,sTemp+Copy(sBuffer,1,nCounter))-1-Length(sTemp);
Break;
end;
sTemp := Copy(sBuffer,nCounter-6,6);
end;
fsFormFile.Position := nStartForm;
sTemp := Format(#27'&f0y0x0S'#27'&u%3.3dD'#27'*t%3.3dR', [nResolut,nResolut]);
fsSaida.Write( pointer(sTemp)^, Length(sTemp) );
fsSaida.CopyFrom( fsFormFile, nEndForm-nStartForm );
fsFormFile.Free;
sTemp := #27'*v0N'#27'&f1s1x10X';
fsSaida.Write( pointer(sTemp)^, Length(sTemp) );
except
MessageDlg( 'O arquivo com o formulário ‘+ pathFormFrente + ’ não pode ser encontrado. Verifique a existência do formulário.’, mtError, [mbOK], 0);
Exit;
end;
end;
if feFormVerso.FileName <> ‘’ then
begin
try
fsFormFile := TFileStream.Create(feFormVerso.FileName, fmOpenRead or fmShareDenyWrite );
SetLength( sBuffer, 8192 );
nCounter := 8192;
nStartForm := -1;
nEndForm := -1;
sTemp := '';
nResolut := 300;
while nCounter > 0 do
begin
nCounter := fsFormFile.Read( pointer(sBuffer)^, 8192);
if Pos(#27'&l0E',sTemp+Copy(sBuffer,1,nCounter)) > 0 then
nStartForm := fsFormFile.Position-nCounter+Pos(#27'&l0E',sTemp+Copy(sBuffer,1,nCounter))-1-Length(sTemp);
if Pos(#27'*t600R',sTemp+Copy(sBuffer,1,nCounter)) > 0 then
nResolut := 600
else if Pos(#27'*t300R',sTemp+Copy(sBuffer,1,nCounter)) > 0 then
nResolut := 300;
if Pos(#27'&l1X'#12,sTemp+Copy(sBuffer,1,nCounter)) > 0 then
begin
nEndForm := fsFormFile.Position-nCounter+Pos(#27'&l1X'#12,sTemp+Copy(sBuffer,1,nCounter))-1-Length(sTemp);
Break;
end;
sTemp := Copy(sBuffer,nCounter-6,6);
end;
fsFormFile.Position := nStartForm;
sTemp := Format(#27'&f1y0x0S'#27'&u%3.3dD'#27'*t%3.3dR', [nResolut,nResolut]);
fsSaida.Write( pointer(sTemp)^, Length(sTemp) );
fsSaida.CopyFrom( fsFormFile, nEndForm-nStartForm );
fsFormFile.Free;
sTemp := #27'*v0N'#27'&f1s1x10X';
fsSaida.Write( pointer(sTemp)^, Length(sTemp) );
except
MessageDlg( ‘O arquivo com o formulário ‘+pathFormVerso+’ não pode ser encontrado. Verifique a existência do formulário.’, mtError, [mbOK], 0);
Exit;
end;
end;
fsFormFont := TFileStream.Create(sFonteDir+'hsbc.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'banestes.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'unibanco.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'caixa.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'bancoob.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'BB.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'bradesc.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'realsant.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
fsFormFont := TFileStream.Create(sFonteDir+'banco_itau.flj', fmOpenRead or fmShareDenyWrite );
fsSaida.CopyFrom(fsFormFont,fsFormFont.Size);
fsFormFont.Free;
sBuffer := #27’%-12345X’#27’E’#27’&l2s26a0o0E’#27’&u300D’;
fsSaida.Write(pointer(sBuffer)^, Length(sBuffer));
ggProgresso2.MinValue := 0;
ggProgresso2.MaxValue := adsClientes.RecordCount;
npaginas :=1;
while not (adsClientes.Eof) do
begin
ggProgresso2.Progress := adsClientes.RecNo;
sBuffer := #27’&f0y4X’;
sBuffer := sBuffer+ #27’(19U’#27’(s1p10v0s3b16602T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [120,1730,‘Nº Contrato: ’ + adsClientes.FieldByName(‘numero_contrato’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [170,490,adsClientes.FieldByName(‘nome’).AsString + ’ - CPF: ’ + adsClientes.FieldByName(‘cpf_cnpj’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [265,190,adsClientes.FieldByName(‘identificao_empresa’).AsString]);
sBuffer := sBuffer+ #27’(s0p14h0s3b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [640,185,adsClientes.FieldByName(‘data_contrato’).AsString]);
sBuffer := sBuffer+ #27’(s0p15h0s3b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [640,450,Copy(adsClientes.FieldByName(‘nome_estabelecimento’).AsString,1,30)]);
sBuffer := sBuffer+ #27’(s0p14h0s3b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [640,1110,adsClientes.FieldByName(‘data_primeiro_vencimento_aberto’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [640,1200, adsClientes.FieldByName(‘valor_parcela_aberto’).AsFloat]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%2.2d’, [640,1730, adsClientes.FieldByName(‘quantidade_parcelas_aberto’).AsInteger]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [640,1760, adsClientes.FieldByName(‘valor_debito_atual_corrigido’).AsFloat]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [965,640, adsClientes.FieldByName(‘valor_debito_corrigido’).AsFloat]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [1045,640, adsClientes.FieldByName(‘valor_desconto’).AsFloat]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [1125,640, adsClientes.FieldByName(‘valor_quitacao’).AsFloat]);
if (Trim(adsClientes.FieldByName(‘descricao_opcao_1’).AsString) <> ‘’) then
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [965,1300,adsClientes.FieldByName(‘descricao_opcao_1’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [965,1640, adsClientes.FieldByName(‘valor_opcao_1’).AsFloat]);
end
else
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [965,1500,’-’]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [965,1960,’-’]);
end;
if (Trim(adsClientes.FieldByName(‘descricao_opcao_2’).AsString) <> ‘’) then
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1045,1300,adsClientes.FieldByName(‘descricao_opcao_2’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [1045,1640, adsClientes.FieldByName(‘valor_opcao_2’).AsFloat]);
end
else
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1045,1500,’-’]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1045,1960,’-’]);
end;
if (Trim(adsClientes.FieldByName(‘descricao_opcao_3’).AsString) <> ‘’) then
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1125,1300,adsClientes.FieldByName(‘descricao_opcao_3’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [1125,1640, adsClientes.FieldByName(‘valor_opcao_3’).AsFloat]);
end
else
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1125,1500,’-’]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1125,1960,’-’]);
end;
if (Trim(adsClientes.FieldByName(‘descricao_opcao_4’).AsString) <> ‘’) then
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1205,1300,adsClientes.FieldByName(‘descricao_opcao_4’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%18.2n’, [1205,1640, adsClientes.FieldByName(‘valor_opcao_4’).AsFloat]);
end
else
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1205,1500,’-’]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1205,1960,’-’]);
end;
sBuffer := sBuffer+ #27’(s1p10v0s3b16602T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1647,650,adsClientes.FieldByName(‘data_validade’).AsString]);
// Informações do Boleto
if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '399') then ///HSBC
begin
BancoD := '399-9';
//sBuffer := sbuffer+Format(#27'(58X'#27'*p%dy%dX%s', [2465,165,'AB']); // Ficha de Compensacao
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '409') then ///UNIBANCO
begin
BancoD := '409-0';
//sBuffer := sbuffer+Format(#27'(72X'#27'*p%dy%dX%s', [2465,165,'AB']); // Ficha de Compensacao
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '104') then ///CEF
begin
BancoD := '104-0';
//sBuffer := sbuffer+Format(#27'(73X'#27'*p%dy%dX%s', [2465,165,'AB']); // Ficha de Compensacao
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '756') then /// Sicoob
begin
BancoD := '756-0';
//sBuffer := sbuffer+Format(#27'(71X'#27'*p%dy%dX%s', [2445,130,'AB']); // Ficha de Compensação
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '001') then /// BB
begin
BancoD := '001-9';
//sBuffer := sbuffer+Format(#27'(70X'#27'*p%dy%dX%s', [2445,105,'AB']); // Ficha de Compensação
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '356') then ///REAL
begin
BancoD := '356-5';
//sBuffer := sbuffer+Format(#27'(74X'#27'*p%dy%dX%s', [2465,165,'AB']); // Ficha de Compensacao Santander
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '237') then /// BRADESCO
begin
BancoD := '237-2';
//sBuffer := sbuffer+Format(#27'(60X'#27'*p%dy%dX%s', [2445,165,'AB']); // Ficha de Compensacao
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '021') then /// BANESTES
begin
BancoD := '021-3';
//sBuffer := sbuffer+Format(#27'(59X'#27'*p%dy%dX%s', [2465,165,'AB']); // Ficha de Compensacao
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else if (Copy(adsClientes.FieldByName('linha_digitavel').AsString, 1, 3) = '341') then /// ITAU
begin
BancoD := '341-7';
//sBuffer := sbuffer+Format(#27'(80X'#27'*p%dy%dX%s', [2445,165,'AB']); // Ficha de Compensacao
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end
else
begin
ShowMessage(Copy(adsClientes.FieldByName('Linha_digitavel').AsString, 1, 3)+' Banco não encontrado!');
end;
sBuffer := sBuffer+ #27’(19U’;
// Recibo do Sacado
sBuffer := sBuffer + #27’(s0p9h0s3b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1835,530,BancoD]);
sBuffer := sBuffer + #27’(s0p11h0s3b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1835,715,adsClientes.FieldByName(‘Linha_Digitavel’).AsString]);
sBuffer := sBuffer + #27’(s0p16h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1920,160, adsClientes.FieldByName(‘nome_cedente’).Asstring]);
sBuffer := sBuffer+Format(#27’*p%dX%20s’, [1170,adsClientes.FieldByName(‘agencia_codigo_cedente’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dX%s’, [1520,adsClientes.FieldByName(‘especie_documento’).AsString]);//Especie Documento
sBuffer := sBuffer+Format(#27’*p%dX%s’, [1680,adsClientes.FieldByName(‘quantidade’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dX%20s’, [1770,adsClientes.FieldByName(‘Nosso_Numero’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2005,160,adsClientes.FieldByName(‘numero_contrato’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dX%20s’, [650,adsClientes.FieldByName(‘cpf_cnpj’).AsString]);
if (adsClientes.FieldByName(‘vencimento’).AsString <> ‘’) then
begin
sBuffer := sBuffer+Format(#27’*p%dX%18s’, [1150,adsClientes.FieldByName(‘vencimento’).AsString]);
end
else
begin
sBuffer := sBuffer+Format(#27’*p%dX%s’, [1250, ‘Contra Apresentação’]);
end;
if (adsClientes.FieldByName(‘valor_boleto’).AsFloat > 0) then
begin
sBuffer := sBuffer+Format(#27’*p%dX%18.2n’,[1350, adsClientes.FieldByName(‘valor_boleto’).AsFloat]);
end;
sBuffer := sBuffer + #27’(s0p16h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2175, 160, adsClientes.FieldByName(‘nome’).AsString]);
// Ficha de Compensação
sBuffer := sBuffer + #27’(s0p9h0s3b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2440,530,BancoD]);
sBuffer := sBuffer + #27’(s0p11h0s3b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2440,715,adsClientes.FieldByName(‘Linha_Digitavel’).AsString]);
sBuffer := sBuffer + #27’(s0p16h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2535,160,adsClientes.FieldByName(‘Local_pagamento’).AsString]);
sBuffer := sBuffer + #27’(s0p14h0s3b4102T’;
if (adsClientes.FieldByName(‘vencimento’).AsString <> ‘’) then
begin
sBuffer := sBuffer+Format(#27’*p%dX%18s’, [1770,adsClientes.FieldByName(‘vencimento’).AsString]);
end
else
begin
sBuffer := sBuffer+Format(#27’*p%dX%s’, [1770, ‘Contra Apresentação’]);
end;
sBuffer := sBuffer + #27’(s0p16h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2605,160, adsClientes.FieldByName(‘nome_cedente’).Asstring]);
sBuffer := sBuffer + #27’(s0p16h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dX%20s’, [1770,adsClientes.FieldByName(‘agencia_codigo_cedente’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2675,160,DateToStr(Now)]);
sBuffer := sBuffer+Format(#27’*p%dX%s’, [500,adsClientes.FieldByName(‘numero_contrato’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dX%s’, [900,adsClientes.FieldByName(‘especie_documento’).AsString]);//Especie Documento
sBuffer := sBuffer+Format(#27’*p%dX%s’, [1150,adsClientes.FieldByName(‘aceite’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dX%s’, [1420,DateToStr(Now)]);
sBuffer := sBuffer+Format(#27’*p%dX%20s’, [1770,adsClientes.FieldByName(‘Nosso_Numero’).AsString]);
sBuffer := sBuffer + #27’(s0p16h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2740, 680,adsClientes.FieldByName(‘carteira’).AsString]); //Carteira
sBuffer := sBuffer+Format(#27’*p%dX%s’, [900,adsClientes.FieldByName(‘Especie_moeda’).AsString]);//Especie
sBuffer := sBuffer + #27’(s0p14h0s3b4102T’;
if (adsClientes.FieldByName(‘valor_boleto’).AsFloat > 0) then
begin
sBuffer := sBuffer+Format(#27’*p%dX%18.2n’, [1770,adsClientes.FieldByName(‘valor_boleto’).AsFloat]);
end;
sBuffer := sBuffer + #27’(s0p22h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2850,160,adsClientes.FieldByName(‘instrucao1’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2890,160,adsClientes.FieldByName(‘instrucao2’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2930,160,adsClientes.FieldByName(‘instrucao3’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [2970,160,adsClientes.FieldByName(‘instrucao4’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [3010,160,adsClientes.FieldByName(‘instrucao5’).AsString]);
sBuffer := sBuffer + #27’(s0p18h0s0b4102T’;
// Sacado
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [3130,260,Trim(adsClientes.FieldByName(‘nome’).AsString)]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [3160,260+deslocamento,adsClientes.FieldByName(‘rua_destinatario’).AsString + ‘, ’ + adsClientes.FieldByName(‘numero_destinatario’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [3190,260+deslocamento,adsClientes.FieldByName(‘bairro_destinatario’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [3220,260+deslocamento,adsClientes.FieldByName(‘cidade_destinatario’).AsString + ’ - ’ +
adsClientes.FieldByName(‘estado_destinatario’).AsString + ’ CEP: ’ + adsClientes.FieldByName(‘cep_destinatario’).AsString]);
nOriginX := 160;
nOriginY := 3310;
CodBarras := Trim(adsClientes.FieldByName(‘Codigo_barra’).AsString);
sBuffer := sBuffer+Format(#27’*p%dy%dX’#27’*c%da150b0P’,[nOriginY, nOriginX, 3]);
inc(nOriginX,6);
sBuffer := sBuffer+Format(#27’*p%dy%dX’#27’*c%da150b0P’,[nOriginY, nOriginX, 3]);
inc(nOriginX,6);
while Length(CodBarras) > 0 do
begin
for nCounter := 1 to 5 do
begin
if aCodBarras[StrToInt(CodBarras[1])][nCounter] = ‘0’ then
nWidth := 3
else
nWidth := 9;
sBuffer := sBuffer+Format(#27'*p%dy%dX'#27'*c%da150b0P',[nOriginY, nOriginX, nWidth]);
inc(nOriginX, nWidth);
if aCodBarras[StrToInt(CodBarras[2])][nCounter] = '0' then
nWidth := 3
else
nWidth := 9;
inc(nOriginX, nWidth);
end;
system.Delete(CodBarras,1,2);
end;
sBuffer := sBuffer+Format(#27’*p%dy%dX’#27’*c%da150b0P’,[nOriginY, nOriginX, 9]);
inc(nOriginX,12);
sBuffer := sBuffer+Format(#27’*p%dy%dX’#27’*c%da150b0P’,[nOriginY, nOriginX, 3]);
sBuffer := sBuffer+#12;
// Início do Verso
sBuffer := sBuffer+#27’&f1y4X’;
sBuffer := sBuffer+#27’(s0p22h0s0b4102T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’,[1750, 50 + deslocamento,#27’&a90P’ + copy(adsClientes.FieldByName(‘nome_arquivo’).AsString,1,Length(adsClientes.FieldByName(‘nome_arquivo’).AsString)-4)+ ’ - Carta(MOD ’ + sModeloCarta+ ‘)’+ #27’&a0P’]);
sBuffer := sBuffer+#27’(s1p8v0s3b16602T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1410,490+deslocamento,adsClientes.FieldByName(‘nome’).AsString]);
sBuffer := sBuffer+#27’(s1p8v0s0b16602T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1450,490+deslocamento,adsClientes.FieldByName(‘rua_destinatario’).AsString + ‘, ’ + adsClientes.FieldByName(‘numero_destinatario’).AsString]);
if (Trim(adsClientes.FieldByName(‘complemento_destinatario’).AsString) <> ‘’) then
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1490,490+deslocamento,adsClientes.FieldByName(‘complemento_destinatario’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1530,490+deslocamento,adsClientes.FieldByName(‘bairro_destinatario’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1570,490+deslocamento,adsClientes.FieldByName(‘cidade_destinatario’).AsString + ’ - ’ +
adsClientes.FieldByName(‘estado_destinatario’).AsString + ’ CEP: ’ + adsClientes.FieldByName(‘cep_destinatario’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1610,490 + deslocamento,trim(adsClientes.FieldByName(‘referencia_destinatario’).AsString)]);
end
else
begin
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1490,490+deslocamento,adsClientes.FieldByName(‘bairro_destinatario’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1530,490+deslocamento,adsClientes.FieldByName(‘cidade_destinatario’).AsString + ’ - ’ +
adsClientes.FieldByName(‘estado_destinatario’).AsString + ’ CEP: ’ + adsClientes.FieldByName(‘cep_destinatario’).AsString]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [1570,490 + deslocamento,trim(adsClientes.FieldByName(‘referencia_destinatario’).AsString)]);
end;
sBuffer := sBuffer+Format(#27’(s22H’#27’*p%dy%dX%4.0d’, [1645,1770+deslocamento,npaginas]);
sBuffer := sBuffer+#27’&a180P’;
sBuffer := sBuffer+#27’(s1p10v0s3b16602T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [530,600+deslocamento,adsClientes.FieldByName(‘nome_remetente’).AsString]);
sBuffer := sBuffer+#27’(s1p10v0s0b16602T’;
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [580,600+deslocamento,‘XXXXXXXXXXXXXXXXXXXX]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [630,600+deslocamento,‘XXXXXXXXXXXXXXXXXXXX’]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [680,600+deslocamento,‘XXXXXXXXXXXXXXXXXXXX’]);
sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [730,600+deslocamento,‘XXXXXXXXXXXXXXXXXXXX’]);
//sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [580,600+deslocamento,adsClientes.FieldByName(‘rua_remetente’).AsString + ‘, ’ + adsClientes.FieldByName(‘numero_remetente’).AsString]);
//if (Trim(adsClientes.FieldByName(‘complemento_remetente’).AsString) <> ‘’) then
//begin
// sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [630,600+deslocamento,adsClientes.FieldByName(‘complemento_remetente’).AsString]);
// sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [680,600+deslocamento,adsClientes.FieldByName(‘bairro_remetente’).AsString]);
// sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [730,600+deslocamento,adsClientes.FieldByName(‘cidade_remetente’).AsString + ’ - ’ +
// adsClientes.FieldByName(‘estado_remetente’).AsString + ’ CEP: ’ + adsClientes.FieldByName(‘cep_remetente’).AsString]);
//end
//else
//begin
// sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [630,600+deslocamento,adsClientes.FieldByName(‘bairro_remetente’).AsString]);
// sBuffer := sBuffer+Format(#27’*p%dy%dX%s’, [680,600+deslocamento,adsClientes.FieldByName(‘cidade_remetente’).AsString + ’ - ’ +
// adsClientes.FieldByName(‘estado_remetente’).AsString + ’ CEP: ’ + adsClientes.FieldByName(‘cep_remetente’).AsString]);
//end;
sBuffer := sBuffer+#27’&a0P’;
sBuffer := sBuffer+#27’(s18H’#12;
inc(npaginas);
adsClientes.Next;
fsSaida.WriteBuffer(pointer(sBuffer)^, Length(sBuffer) );
end;
sBuffer := #27’E’;
fsSaida.WriteBuffer(pointer(sBuffer)^, Length(sBuffer) );
fsSaida.Free;
ggProgresso2.Progress := 0;
end;
end;
Screen.Cursor := crDefault;
adsClientes.Close;
end;[/code]
Acima é a procedure que realiza a impressão no delphi capturando os dados variáveis de um banco de dados.