Ir para conteúdo
  • Cadastre-se

dev botao

Problemas Com Acbrecf+Acbraac.


edvaniojancy
Ver Solução Respondido por Régys Silveira,
  • Este tópico foi criado há 4075 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

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;
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4075 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.