Печать в потоке

отредактировано 14:58 Раздел: FastReport 4.0
Помогите решить такую проблему:
в процедуре, я в цикле из нескольких отчетов собираю один, затем передаю сформированный отчет в поток и там либо экспортирую в .pdf либо пытаюсь вывести на печать
с экспортом проблем нет, .pdf формируются
а при выводе на печать формируются задания на принтер и остаются висеть в очереди, пока приложение не будет закрыто.
Подскажите в чем затык?
в процедуре
    Final_Report:=TfrxReport.Create(Application);
    Page := TfrxReportPage.Create(Final_Report);
    Page.PrintOnPreviousPage:=True;
    Final_Report.EngineOptions.SilentMode := True;
    Final_Report.EngineOptions.UseFileCache := False;
    Final_Report.ShowProgress := False;
    Final_Report.PrepareReport(true);
...
       Reestr_Report.PrepareReport(True);
       Final_Report.PreviewPages.AddFrom(Reestr_Report);
...
  {удалим первую пустую страницу}
  Final_Report.PreviewPages.DeletePage(0);
  {передаем данные в поток}
  Reestr_Thread:=TReestr_Thread.Create(True);
  Reestr_Thread.Active_Form := f;
  Reestr_Thread.Report:= Final_Report;
  Reestr_Thread.FreeOnTerminate:=true;
  Reestr_Thread.Priority:=tpLower	;
  Reestr_Thread.Resume;


в потоке
procedure TReestr_Thread.Execute;
const
  Dir_Name = 'c:\export_pdf';
var
  PDF: TfrxPDFExport;
begin
 try
  if (FDevice = 0) then begin //на принтер
      FReport.PrintOptions.ShowDialog := False;
      FReport.Print;
   end else begin
     // печатаем в файл
    PDF := TfrxPDFExport.Create(nil);
    PDF.ShowDialog := False;
    PDF.ShowProgress := False;
    if not DirectoryExists(Dir_Name) then
    if not CreateDir(Dir_Name) then
      raise Exception.Create('Cannot create '+Dir_Name);

    PDF.FileName := Dir_Name+'\report_'+  IntToStr(FQuery_id) + '_' + FormatDateTime('YYYYYMMDDHHMMSS', Now) + '.pdf';
    FReport.Export(PDF);
   end;
  finally
   if Assigned(PDF) then PDF.free;
   Synchronize(Form_Free);
  end;
end;

   

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.