Ja tentei e nao conseguir fazer com que o meu relatorio de PLANO DE CONTAS  
pulasse uma linha toda vez que a conta saisse de nivel ou mudasse de nivel
ex:

1.00.000.0000.00000  ATIVO 

1.11.000.0000.00000     PERMANENTE

1.11.001.0000.00000        CAIXA
1.11.002.0000.00000           BANCO DO BRASIL
1.11.003.0000.00000           BRADESCO

1.12.000.0000.00000     CONTAS A PAGAR
e assim sucessivamente....

Esse eh o codigo:

procedure TfrmRelPlanoContas.btnImprimirClick(Sender: TObject);
var vTexto, vApagaCaracter : String;
begin
   frmRelPlanoContas.RDprint1.Abrir; // inicializa o arquivo de impressao...
   frmRelPlanoContas.RDprint1.OpcoesPreview.CaptionPreview := 
pnCabecalho.Caption;
   frmRelPlanoContas.RDprint1.CaptionSetup                 := 
pnCabecalho.Caption;

   if frmRelPlanoContas.RDprint1.Setup then  // abre tela para escolha da 
impressora e modelo...
      begin
         vPagina :=  1;
         vrow    := 80;
         DtaModulo.qryPadrao.Close;
         vSelect := 'Select * from PlanoContas where Cliente = ' + 
IntToStr(yCodCliente);
         vOrder  := 'order by '+zIIF2(cmbOrder.ItemIndex = 
0,'Conta','descricao');
         DtaModulo.qryPadrao.SQL.Text := vSelect + vOrder;
         DtaModulo.qryPadrao.Open;
         DtaModulo.qryPadrao.Last;
         vQteReg := DtaModulo.qryPadrao.RecordCount;
         DtaModulo.qryPadrao.First;
         while not DtaModulo.qryPadrao.Eof do
            begin
               zProgresso01(vQteReg,'AGUARDE...');
               zFANTASIA:= frmPrincipal.lblCliente.Caption;
               zAnoLetivo:= DtaModulo.tbEmpresa.FieldByName('Ano').asstring;
               if zCabRel('PLANO DE CONTAS', '',1) then
                  begin
                     frmRelPlanoContas.RDprint1.ImpF(zRow(0),1,'CONTA           
     CRED  DV  DESCRICAO',[normal]);
                     
frmRelPlanoContas.RDprint1.ImpF(zRow(1),1,'===================  ====  ==  
================================================ ',[normal]);
                  end;
               
frmRelPlanoContas.RDprint1.impF(zRow(1),1,DtaModulo.qryPadrao.FieldByName('CONTA').asstring,
 [normal]);
               //espacos entre as contas
               frmRelPlanoContas.RDprint1.impF(zRow(1 - 
1),32,zReplicate('',zNivelReal(DtaModulo.qryPadrao.FieldByName('CONTA').asstring))+
 DtaModulo.qryPadrao.FieldByName('DESCRICAO').asstring, [normal]);

               vApagaCaracter:= 
'000'+DtaModulo.qryPadrao.FieldByName('CODRED').asstring;
               //apaga 000100 = 0100
               if Length(vApagaCaracter) > 5 then
                  vApagaCaracter:= 
copy(vApagaCaracter,3,length(vApagaCaracter));
               //apaga 00099 = 0099
               if Length(vApagaCaracter) > 4 then
                  vApagaCaracter:= 
copy(vApagaCaracter,2,length(vApagaCaracter));
               frmRelPlanoContas.RDprint1.impD(zRow(1 - 1),26,vApagaCaracter, 
[normal]);
               frmRelPlanoContas.RDprint1.impF(zRow(1 - 1),28, 
Modulo11(DtaModulo.qryPadrao.FieldByName('CODRED').asstring), [normal]);
               DtaModulo.qryPadrao.Next;
            end;
         vTexto := '-- Registros: '+VarToStr(vQteReg)+' ';
         vTexto := vTexto + zReplicate('-',75-length(vTexto));
         frmRelPlanoContas.RDprint1.ImpF(zRow(1),5,vTexto, [normal]);
         frmRelPlanoContas.RDprint1.OpcoesPreview.PaginaZebrada :=true;
         frmRelPlanoContas.RDprint1.OpcoesPreview.Preview := True;

         frmRelPlanoContas.RDprint1.Fechar;
         zProgresso02;
         DtaModulo.qryPadrao.Close;
      end
   else
      showmessage('Relatório Cancelado');
   end;


[As partes desta mensagem que não continham texto foram removidas]

Responder a