Ao utilizar o AcbrECF em conjunto com o AcbrAAC para imprimir a Identificação PAF e os Parâmetros de Configuração do PAF o mesmo só imprimi 6 linha.
Método utilizado:
ACBrECF.PafMF_RelIdentificacaoPafECF(ACBrAAC.IdentPAF, 3);
ACBrECF.PafMF_RelIdentificacaoPafECF( ACBrAAC1.IdentPAF, 4);
procedure TACBrECF.LinhaRelatorioGerencial(const Linha: AnsiString;
const IndiceBMP: Integer);
Var
Texto, Buffer : AnsiString ;
Lin : Integer ;
SL : TStringList ;
Procedure TentaImprimirLinhas( Texto: AnsiString; IndiceBMP: Integer ) ;
var
Est : TACBrECFEstado ;
OldTimeOut : LongInt ;
Erro : String ;
begin
ComandoLOG := 'LinhaRelatorioGerencial( "'+Texto+'", '+IntToStr(IndiceBMP)+' )';
try
fsECF.LinhaRelatorioGerencial( Texto, IndiceBMP ) ;
except
On E : Exception do
begin
Erro := E.Message ;
// Não conseguiu imprimir ? Verifique se o relatório foi fechado pelo ECF //
OldTimeOut := TimeOut;
TimeOut := max(TimeOut,5); // Tenta ler o Estado por 5 seg ou mais
Est := estDesconhecido;
try
Est := Estado; // Lendo o estado do ECF
if Est = estLivre then
begin
// Está Livre, provavelmente foi fechado por longo tempo de
// impressao... (O ECF é obrigado a fechar o Gerencial após 2
// minutos de Impressão). Vamos abrir um Novo Gerencial e Tentar
// novamente
AbreRelatorioGerencial(fsIndiceGerencial);
fsECF.LinhaRelatorioGerencial( Texto, IndiceBMP );
end ;
finally
TimeOut := OldTimeOut;
if Est <> estLivre then
raise EACBrECFErro.Create( ACBrStrToAnsi(Erro) );
end ;
end ;
end ;
end ;
begin
if MaxLinhasBuffer < 1 then
begin
ComandoLOG := 'LinhaRelatorioGerencial( "'+Linha+'", '+IntToStr(IndiceBMP)+' )';
fsECF.LinhaRelatorioGerencial( DecodificarTagsFormatacao( Linha ), IndiceBMP ) ;
end
else
begin
Texto := '' ;
Buffer := DecodificarTagsFormatacao( Linha );
Buffer := AjustaLinhas(Buffer, Colunas) ;
SL := TStringList.Create ;
try
SL.Text := Buffer ; neste ponto a variável SL fica apenas com 6 linhas
For Lin := 0 to SL.Count - 1 do
begin
Texto := Texto + SL[Lin] + sLineBreak;
if (Lin mod MaxLinhasBuffer) = 0 then
begin
TentaImprimirLinhas( Texto, IndiceBMP ) ;
Texto := '' ;
end ;
end ;
if Texto <> '' then
TentaImprimirLinhas( Texto, IndiceBMP ) ;
finally
SL.Free ;
end ;
end ;
{$IFNDEF CONSOLE}
if MemoAssigned then
begin
fsMemoOperacao := 'linharelatoriogerencial' ;
Buffer := AjustaLinhas( Linha, fsMemoColunas) ;
MemoAdicionaLinha( Buffer );
end ;
{$ENDIF}
end;