Предварительный просмотр FastReport не показывает все страницы - PullRequest
1 голос
/ 07 мая 2010

Я использую FastReport 4.7.31 в Turbo Delphi Pro.

Следующая процедура обрабатывает данные, хранящиеся в нескольких датированных файлах, в зависимости от ввода пользователя.

    procedure TfrmMain.MyReportPrint;
var  MDate : Tdate;
     S, myfile : string;
     firstone: boolean;
//   Date1, Date2 & ShowPreview are global variables set via a dialog box     
begin
   firstone := true;
   MDate := Date1;
   while MDate < IncDay(Date2, 1)  do
   begin
      DateTimeToString(S,'yyyymmdd',MDate);
      myfile := 'm' + S + '.dbf';
      if FileExists(DataPath + '\' + myfile) then
      begin
         tblPS.Close;
         tblPS.TableName := myfile;
         frxMyReport.PrepareReport(firstone);
         firstone := false;
      end;
      MDate := IncDay(MDate, 1);
   end;
   if ShowPreview then frxMyReport.ShowReport else frxMyReport.Print;
end;

frxMyReport.Printпечатает все страниц.

frxMyReport.ShowReport показывает только последнюю подготовленную страницу .

1 Ответ

2 голосов
/ 08 мая 2010

Метод ShowReport принимает необязательный параметр ClearLastReport, и его значением по умолчанию является true . Является ли это истинным или ложным, ShowReport готовит отчет перед его отображением, поэтому в своем коде вы отбрасываете все, что вы уже подготовили, а затем заново готовите отчет, используя самые последние назначенные параметры таблицы. Если единственное изменение, которое вы должны были внести в свой код, это передать False в ShowReport, то вы обнаружите, что предварительный просмотр показал все ваши страницы, но повторил последнюю страницу.

В отличие от ShowReport, метод Print не готовит отчет. Он печатает только то, что уже было подготовлено. Вы хотите ShowPreparedReport для предварительного просмотра, а не ShowReport. См. Раздел 1.9 Руководства программиста FastReport .

...