Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как сохранить QuickReport в stream

Delphi , Компоненты и Классы , TQuickReport



Автор: http://www.swissdelphicenter.ch

uses QRPrntr;

procedure SaveQuickReportToStream(AQuickReport: TQuickRep; AStream: TStream);
var
  PL: TQRPageList;
  I: Integer;
begin
  PL := nil;
  try
    PL := TQRPageList.Create;
    PL.Stream := TQRStream.Create(100000);
    AQuickReport.Prepare;
    PL.LockList;
    try
      for I := 1 to AQuickReport.QRPrinter.PageCount do
        PL.AddPage(AQuickReport.QRPrinter.GetPage(I));
      PL.Finish;
    finally
      PL.UnlockList;
    end;
    PL.Stream.SaveToStream(AStream);
  finally
    FreeAndNil(PL);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TFileStream;
begin
  stream := TFileStream.Create('c:\quickreport.dat', fmCreate);
  QuickReportToStream(QuickRep1, stream);
  stream.Free;
end;

Here's a translation of the content into Russian:

Код, предназначенный для сохранения QuickReport в потоке, создает временный список страниц и затем добавляет все страницы отчета в этот список. После этого содержимое временного списка страниц сохраняется в указанном потоке.

Вот несколько способов улучшить контент:

  1. Код кажется не полным, поскольку он не включает объявление формы (TForm1) или создание объекта QuickRep1. Создайте форму и объект QuickRep1 где-то в программе.
  2. Код не обрабатывает потенциальные исключения, которые могут возникнуть при выполнении кода. Добавьте обработку ошибок с помощью блоков try-except.

Вот улучшенная версия кода:

uses
  QRPrntr,
  Forms;

type
  TForm1 = class(TForm)
    Button1: TButton;
    QuickRep1: TQuickRep;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TFileStream;
begin
  try
    stream := TFileStream.Create('c:\quickreport.dat', fmCreate);
    SaveQuickReportToStream(QuickRep1, stream);
    stream.Free;
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;
end;

procedure SaveQuickReportToStream(AQuickReport: TQuickRep; AStream: TStream);
var
  PL: TQRPageList;
  I: Integer;
begin
  PL := nil;
  try
    PL := TQRPageList.Create;
    PL.Stream := TQRStream.Create(100000);
    AQuickReport.Prepare;
    PL.LockList;
    try
      for I := 1 to AQuickReport.QRPrinter.PageCount do
        PL.AddPage(AQuickReport.QRPrinter.GetPage(I));
      PL.Finish;
    finally
      PL.UnlockList;
    end;
    PL.Stream.SaveToStream(AStream);
  finally
    FreeAndNil(PL);
  end;
end;

initialization
  {$I quickreport.dfm}
end.

В улучшенном коде:

  1. Форма объявлена как TForm1.
  2. Создание объекта QuickRep1 удалено, поскольку оно не было предоставлено в оригинальном коде и может быть создано где-то else в программе.
  3. Обработка ошибок с помощью блоков try-except добавлена для обработки потенциальных исключений при выполнении кода.
  4. Если исключение происходит, то сообщение об ошибке будет отображаться в окне сообщений.

Представлен код на Delphi, который позволяет сохранить отчёт QuickReport в поток (stream) для последующего использования или хранения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TQuickReport ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:30:21/0.0031099319458008/0