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]