Duvida com DisableControls e EnableControls

Delphi

18/03/2012

Bom dia pessoal,
Uso o codigo abaixo para gerar um relatorio com fastreport
Estou usando TADOTable e um campo integer calculado para criar um indice automatico.

O problema é que se uso o DisableControls e EnableControls o indice no relatorio começa com -1. fica assim
-1
2
3
4 ...
e se retiro DisableControls e EnableControls fica normal assim
1
2
3
4 ...
como faço pra resolver isso?
  if DM.TSetor.RecordCount <= 0 then
    begin
      Application.MessageBox(pchar(Não há dados para gerar relatório),pchar(Caption),MB_OK+MB_ICONINFORMATION);
    end
  else
    begin
      DM.TSetor.DisableControls;
      DM.Relatorio.LoadFromFile(ExtractFilePath(Application.ExeName)+\Relatorio\Setor01.fr3);
      DM.Relatorio.PrepareReport(true);
      DM.Relatorio.ShowReport(true);
      DM.TSetor.EnableControls;
    end;


desde já agradeço.
Valdenir Matos

Valdenir Matos

Curtidas 0

Respostas

Valdenir Albino

Valdenir Albino

18/03/2012

Duas soluções.

Se você tiver usando um TDataSource para ligar os componentes, ao invés de usar o EnableControls e o DisableControls, utilise o Enable do DataSource e ficaria mais ou menos assim.

if DM.TSetor.RecordCount <= 0 then
begin
  Application.MessageBox(pchar(Não há dados para gerar relatório),pchar(Caption),MB_OK+MB_ICONINFORMATION);
end
else
begin
  DM.TDataSource.Enable := false;
  try
    DM.Relatorio.LoadFromFile(ExtractFilePath(Application.ExeName)+\Relatorio\Setor01.fr3);
    DM.Relatorio.PrepareReport(true);
    DM.Relatorio.ShowReport(true);
  finally
    DM.TDataSource.Enable := true;
  end;
end;


Se isso não Funcionar, use o RecNo do DataSet
antes de Dar o ShowReport:

DM.TSetor.RecNo := 1;
GOSTEI 0
POSTAR