unit RptFrm;interfaceuses
  SysUtils, Classes, Controls, NrmlFrm, QRPrntr, ActnList, ImgList, ComCtrls,
  ToolWin, Forms, StdCtrls, Spin, Dialogs;type
  TReportForm = class(TForm)
    qrpPreview: TQRPreview;
    tlbtnZoomToFit: TToolButton;
    tlbtnActualSize: TToolButton;
    tlbtnZoomToWidth: TToolButton;
    tlbtnSprt1: TToolButton;
    tlbtnFirst: TToolButton;
    tlbtnPrior: TToolButton;
    tlbtnNext: TToolButton;
    tlbtnLast: TToolButton;
    tlbtnSprt2: TToolButton;
    tlbtnPrintSetup: TToolButton;
    tlbtnPrint: TToolButton;
    tlbtnSprt3: TToolButton;
    tlbtnOpen: TToolButton;
    tlbtnSave: TToolButton;
    tlbtnSprt4: TToolButton;
    tlbtnExit: TToolButton;
    spePage: TSpinEdit;
    lblZoom: TLabel;
    speZoom: TSpinEdit;
    lblPage: TLabel;
    actZoomToFit: TAction;
    actActualSize: TAction;
    actZoomToWidth: TAction;
    actFirst: TAction;
    actPrior: TAction;
    actNext: TAction;
    actLast: TAction;
    actPrintSetup: TAction;
    actPrint: TAction;
    actOpen: TAction;
    actExit: TAction;
    stbStatus: TStatusBar;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    actRptSave: TAction;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure actExitExecute(Sender: TObject);
    procedure actZoomToFitExecute(Sender: TObject);
    procedure actActualSizeExecute(Sender: TObject);
    procedure actZoomToWidthExecute(Sender: TObject);
    procedure speZoomChange(Sender: TObject);
    procedure actFirstExecute(Sender: TObject);
    procedure actPriorExecute(Sender: TObject);
    procedure actLastExecute(Sender: TObject);
    procedure actFirstUpdate(Sender: TObject);
    procedure actNextUpdate(Sender: TObject);
    procedure spePageChange(Sender: TObject);
    procedure qrpPreviewPageAvailable(Sender: TObject; PageNum: Integer);
    procedure actPrintExecute(Sender: TObject);
    procedure actPrintSetupExecute(Sender: TObject);
    procedure actOpenExecute(Sender: TObject);
    procedure actRptSaveExecute(Sender: TObject);
    procedure actCloseExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FPageCount: Integer;    function GetQRPrinter: TQRPrinter;
    procedure SetQRPrinter(const Value: TQRPrinter);
    procedure EnableActions(const AEnabled: Boolean);
  public
    { Public declarations }
    property QRPrinter: TQRPrinter read GetQRPrinter write SetQRPrinter;    procedure Back;
  end;implementationuses StdTypes, CtrlFrm;{$R *.DFM}{ TReportForm }function TReportForm.GetQRPrinter: TQRPrinter;
begin
  Result := qrpPreview.QRPrinter
end;procedure TReportForm.SetQRPrinter(const Value: TQRPrinter);
begin
  qrpPreview.QRPrinter := Value
end;procedure TReportForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  QRPrinter := nil;  inherited;
end;procedure TReportForm.Back;
begin
  QRPrinter := nil;
  NextPage := PrevPage;
  ChangePage
end;procedure TReportForm.actExitExecute(Sender: TObject);
begin
  inherited;  Back
end;procedure TReportForm.actZoomToFitExecute(Sender: TObject);
begin
  inherited;  qrpPreview.ZoomToFit;
  speZoom.Value := qrpPreview.Zoom;
  (Sender as TAction).Checked := True
end;procedure TReportForm.actActualSizeExecute(Sender: TObject);
begin
  inherited;  speZoom.Value := 100;
  (Sender as TAction).Checked := True
end;procedure TReportForm.actZoomToWidthExecute(Sender: TObject);
begin
  inherited;  qrpPreview.ZoomToWidth;
  speZoom.Value := qrpPreview.Zoom;
  actZoomToWidth.Checked := True
end;procedure TReportForm.speZoomChange(Sender: TObject);
begin
  inherited;  qrpPreview.Zoom := speZoom.Value
end;procedure TReportForm.actFirstExecute(Sender: TObject);
begin
  inherited;  spePage.Value := 1;
end;procedure TReportForm.actPriorExecute(Sender: TObject);
begin
  inherited;  with Sender as TAction do
    spePage.Value := qrpPreview.PageNumber + Tag
end;procedure TReportForm.actLastExecute(Sender: TObject);
begin
  inherited;  spePage.Value := FPageCount
end;procedure TReportForm.actFirstUpdate(Sender: TObject);
begin
  inherited;  with spePage do
    (Sender as TAction).Enabled := qrpPreview.PageNumber > MinValue;
  spePage.Enabled := spePage.MaxValue > spePage.MinValue;
end;procedure TReportForm.actNextUpdate(Sender: TObject);
begin
  inherited;  with spePage do
    (Sender as TAction).Enabled := qrpPreview.PageNumber < MaxValue
end;procedure TReportForm.spePageChange(Sender: TObject);
begin
  inherited;  if (spePage.Value >= spePage.MinValue) and
    (spePage.Value <= spePage.MaxValue) then begin
    qrpPreview.PageNumber := spePage.Value;
    stbStatus.Panels[1].Text := Format('%d-%d',
      [qrpPreview.PageNumber, FPageCount]);
  end
end;procedure TReportForm.qrpPreviewPageAvailable(Sender: TObject;
  PageNum: Integer);
var
  FText: string;
begin
  inherited;  // yjc Add This 2000.07.20  22:27
  tlbtnZoomToWidth.Down := True;
  actZoomToWidth.Execute;
  FPageCount := QRPrinter.PageCount;
  spePage.MaxValue := PageNum;
  stbStatus.Panels[1].Text := Format('1-%d', [PageNum]);  FText := QRPrinter.Title;
  if FText <> EmptyStr then
    FText := FText + ' - ';
  case QRPrinter.Status of
    mpReady: FText := FText + SQRReady;
    mpBusy: begin
     FText := FText + SQRBusy;
      EnableActions(False)
    end;
    mpFinished: begin
        FText := FText + SQRFinished;
        spePage.Value := 1;
        EnableActions(True)
      end
  end;
  stbStatus.Panels[0].Text := FText;
end;procedure TReportForm.actPrintExecute(Sender: TObject);
begin
  inherited;  with Sender as TAction do begin
    Enabled := False;
    QRPrinter.Print;
    Enabled := True
  end
end;procedure TReportForm.actPrintSetupExecute(Sender: TObject);
begin
  inherited;  QRPrinter.PrintSetup
end;procedure TReportForm.actOpenExecute(Sender: TObject);
begin
  inherited;  if OpenDialog.Execute then begin
    if FileExists(OpenDialog.FileName) then begin
      QRPrinter.Load(OpenDialog.FileName);
      qrpPreviewPageAvailable(nil, QRPrinter.PageCount);
      qrpPreview.PreviewImage.PageNumber := 1;
    end
  end
end;procedure TReportForm.EnableActions(const AEnabled: Boolean);
var
  i: Integer;
begin
  for i := 0 to alActions.ActionCount - 1 do
    (alActions[i] as TAction).Enabled := AEnabled;
  speZoom.Enabled := AEnabled;
  spePage.Enabled := AEnabled;
end;procedure TReportForm.actRptSaveExecute(Sender: TObject);
var
  AExportFilter: TQRExportFilter;
begin
  inherited;  SaveDialog.Filter := QRExportFilterLibrary.SaveDialogFilterString;
  if SaveDialog.Execute then
    if SaveDialog.FilterIndex = 1 then
      QRPrinter.Save(SaveDialog.FileName)
    else begin
      AExportFilter := TQRExportFilterLibraryEntry(
       QRExportFilterLibrary.Filters[SaveDialog.FilterIndex - 2]).
        ExportFilterClass.Create(SaveDialog.Filename);
      try
        QRPrinter.ExportToFilter(AExportFilter);
      finally
        AExportFilter.Free
      end
    end
end;procedure TReportForm.actCloseExecute(Sender: TObject);
begin
  TControlForm(ParentForm).ClosingReport;
  Back
end;procedure TReportForm.FormCreate(Sender: TObject);
begin
  inherited;  AutoBack := True
end;end.

解决方案 »

  1.   

    unit RptFrm;interfaceuses
      SysUtils, Classes, Controls, NrmlFrm, QRPrntr, ActnList, ImgList, ComCtrls,
      ToolWin, Forms, StdCtrls, Spin, Dialogs;type
      TReportForm = class(TForm)
        qrpPreview: TQRPreview;
        tlbtnZoomToFit: TToolButton;
        tlbtnActualSize: TToolButton;
        tlbtnZoomToWidth: TToolButton;
        tlbtnSprt1: TToolButton;
        tlbtnFirst: TToolButton;
        tlbtnPrior: TToolButton;
        tlbtnNext: TToolButton;
        tlbtnLast: TToolButton;
        tlbtnSprt2: TToolButton;
        tlbtnPrintSetup: TToolButton;
        tlbtnPrint: TToolButton;
        tlbtnSprt3: TToolButton;
        tlbtnOpen: TToolButton;
        tlbtnSave: TToolButton;
        tlbtnSprt4: TToolButton;
        tlbtnExit: TToolButton;
        spePage: TSpinEdit;
        lblZoom: TLabel;
        speZoom: TSpinEdit;
        lblPage: TLabel;
        actZoomToFit: TAction;
        actActualSize: TAction;
        actZoomToWidth: TAction;
        actFirst: TAction;
        actPrior: TAction;
        actNext: TAction;
        actLast: TAction;
        actPrintSetup: TAction;
        actPrint: TAction;
        actOpen: TAction;
        actExit: TAction;
        stbStatus: TStatusBar;
        OpenDialog: TOpenDialog;
        SaveDialog: TSaveDialog;
        actRptSave: TAction;
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure actExitExecute(Sender: TObject);
        procedure actZoomToFitExecute(Sender: TObject);
        procedure actActualSizeExecute(Sender: TObject);
        procedure actZoomToWidthExecute(Sender: TObject);
        procedure speZoomChange(Sender: TObject);
        procedure actFirstExecute(Sender: TObject);
        procedure actPriorExecute(Sender: TObject);
        procedure actLastExecute(Sender: TObject);
        procedure actFirstUpdate(Sender: TObject);
        procedure actNextUpdate(Sender: TObject);
        procedure spePageChange(Sender: TObject);
        procedure qrpPreviewPageAvailable(Sender: TObject; PageNum: Integer);
        procedure actPrintExecute(Sender: TObject);
        procedure actPrintSetupExecute(Sender: TObject);
        procedure actOpenExecute(Sender: TObject);
        procedure actRptSaveExecute(Sender: TObject);
        procedure actCloseExecute(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        FPageCount: Integer;    function GetQRPrinter: TQRPrinter;
        procedure SetQRPrinter(const Value: TQRPrinter);
        procedure EnableActions(const AEnabled: Boolean);
      public
        { Public declarations }
        property QRPrinter: TQRPrinter read GetQRPrinter write SetQRPrinter;    procedure Back;
      end;implementationuses StdTypes, CtrlFrm;{$R *.DFM}{ TReportForm }function TReportForm.GetQRPrinter: TQRPrinter;
    begin
      Result := qrpPreview.QRPrinter
    end;procedure TReportForm.SetQRPrinter(const Value: TQRPrinter);
    begin
      qrpPreview.QRPrinter := Value
    end;procedure TReportForm.FormCloseQuery(Sender: TObject;
      var CanClose: Boolean);
    begin
      QRPrinter := nil;  inherited;
    end;procedure TReportForm.Back;
    begin
      QRPrinter := nil;
      NextPage := PrevPage;
      ChangePage
    end;procedure TReportForm.actExitExecute(Sender: TObject);
    begin
      inherited;  Back
    end;procedure TReportForm.actZoomToFitExecute(Sender: TObject);
    begin
      inherited;  qrpPreview.ZoomToFit;
      speZoom.Value := qrpPreview.Zoom;
      (Sender as TAction).Checked := True
    end;procedure TReportForm.actActualSizeExecute(Sender: TObject);
    begin
      inherited;  speZoom.Value := 100;
      (Sender as TAction).Checked := True
    end;procedure TReportForm.actZoomToWidthExecute(Sender: TObject);
    begin
      inherited;  qrpPreview.ZoomToWidth;
      speZoom.Value := qrpPreview.Zoom;
      actZoomToWidth.Checked := True
    end;procedure TReportForm.speZoomChange(Sender: TObject);
    begin
      inherited;  qrpPreview.Zoom := speZoom.Value
    end;procedure TReportForm.actFirstExecute(Sender: TObject);
    begin
      inherited;  spePage.Value := 1;
    end;procedure TReportForm.actPriorExecute(Sender: TObject);
    begin
      inherited;  with Sender as TAction do
        spePage.Value := qrpPreview.PageNumber + Tag
    end;procedure TReportForm.actLastExecute(Sender: TObject);
    begin
      inherited;  spePage.Value := FPageCount
    end;procedure TReportForm.actFirstUpdate(Sender: TObject);
    begin
      inherited;  with spePage do
        (Sender as TAction).Enabled := qrpPreview.PageNumber > MinValue;
      spePage.Enabled := spePage.MaxValue > spePage.MinValue;
    end;procedure TReportForm.actNextUpdate(Sender: TObject);
    begin
      inherited;  with spePage do
        (Sender as TAction).Enabled := qrpPreview.PageNumber < MaxValue
    end;procedure TReportForm.spePageChange(Sender: TObject);
    begin
      inherited;  if (spePage.Value >= spePage.MinValue) and
        (spePage.Value <= spePage.MaxValue) then begin
        qrpPreview.PageNumber := spePage.Value;
        stbStatus.Panels[1].Text := Format('%d-%d',
          [qrpPreview.PageNumber, FPageCount]);
      end
    end;procedure TReportForm.qrpPreviewPageAvailable(Sender: TObject;
      PageNum: Integer);
    var
      FText: string;
    begin
      inherited;  // yjc Add This 2000.07.20  22:27
      tlbtnZoomToWidth.Down := True;
      actZoomToWidth.Execute;
      FPageCount := QRPrinter.PageCount;
      spePage.MaxValue := PageNum;
      stbStatus.Panels[1].Text := Format('1-%d', [PageNum]);  FText := QRPrinter.Title;
      if FText <> EmptyStr then
        FText := FText + ' - ';
      case QRPrinter.Status of
        mpReady: FText := FText + SQRReady;
        mpBusy: begin
         FText := FText + SQRBusy;
          EnableActions(False)
        end;
        mpFinished: begin
            FText := FText + SQRFinished;
            spePage.Value := 1;
            EnableActions(True)
          end
      end;
      stbStatus.Panels[0].Text := FText;
    end;procedure TReportForm.actPrintExecute(Sender: TObject);
    begin
      inherited;  with Sender as TAction do begin
        Enabled := False;
        QRPrinter.Print;
        Enabled := True
      end
    end;procedure TReportForm.actPrintSetupExecute(Sender: TObject);
    begin
      inherited;  QRPrinter.PrintSetup
    end;procedure TReportForm.actOpenExecute(Sender: TObject);
    begin
      inherited;  if OpenDialog.Execute then begin
        if FileExists(OpenDialog.FileName) then begin
          QRPrinter.Load(OpenDialog.FileName);
          qrpPreviewPageAvailable(nil, QRPrinter.PageCount);
          qrpPreview.PreviewImage.PageNumber := 1;
        end
      end
    end;procedure TReportForm.EnableActions(const AEnabled: Boolean);
    var
      i: Integer;
    begin
      for i := 0 to alActions.ActionCount - 1 do
        (alActions[i] as TAction).Enabled := AEnabled;
      speZoom.Enabled := AEnabled;
      spePage.Enabled := AEnabled;
    end;procedure TReportForm.actRptSaveExecute(Sender: TObject);
    var
      AExportFilter: TQRExportFilter;
    begin
      inherited;  SaveDialog.Filter := QRExportFilterLibrary.SaveDialogFilterString;
      if SaveDialog.Execute then
        if SaveDialog.FilterIndex = 1 then
          QRPrinter.Save(SaveDialog.FileName)
        else begin
          AExportFilter := TQRExportFilterLibraryEntry(
           QRExportFilterLibrary.Filters[SaveDialog.FilterIndex - 2]).
            ExportFilterClass.Create(SaveDialog.Filename);
          try
            QRPrinter.ExportToFilter(AExportFilter);
          finally
            AExportFilter.Free
          end
        end
    end;procedure TReportForm.actCloseExecute(Sender: TObject);
    begin
      TControlForm(ParentForm).ClosingReport;
      Back
    end;procedure TReportForm.FormCreate(Sender: TObject);
    begin
      inherited;  AutoBack := True
    end;end.
      

  2.   

    unit RptFrm;interfaceuses
      SysUtils, Classes, Controls, NrmlFrm, QRPrntr, ActnList, ImgList, ComCtrls,
      ToolWin, Forms, StdCtrls, Spin, Dialogs;type
      TReportForm = class(TForm)
        qrpPreview: TQRPreview;
        tlbtnZoomToFit: TToolButton;
        tlbtnActualSize: TToolButton;
        tlbtnZoomToWidth: TToolButton;
        tlbtnSprt1: TToolButton;
        tlbtnFirst: TToolButton;
        tlbtnPrior: TToolButton;
        tlbtnNext: TToolButton;
        tlbtnLast: TToolButton;
        tlbtnSprt2: TToolButton;
        tlbtnPrintSetup: TToolButton;
        tlbtnPrint: TToolButton;
        tlbtnSprt3: TToolButton;
        tlbtnOpen: TToolButton;
        tlbtnSave: TToolButton;
        tlbtnSprt4: TToolButton;
        tlbtnExit: TToolButton;
        spePage: TSpinEdit;
        lblZoom: TLabel;
        speZoom: TSpinEdit;
        lblPage: TLabel;
        actZoomToFit: TAction;
        actActualSize: TAction;
        actZoomToWidth: TAction;
        actFirst: TAction;
        actPrior: TAction;
        actNext: TAction;
        actLast: TAction;
        actPrintSetup: TAction;
        actPrint: TAction;
        actOpen: TAction;
        actExit: TAction;
        stbStatus: TStatusBar;
        OpenDialog: TOpenDialog;
        SaveDialog: TSaveDialog;
        actRptSave: TAction;
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure actExitExecute(Sender: TObject);
        procedure actZoomToFitExecute(Sender: TObject);
        procedure actActualSizeExecute(Sender: TObject);
        procedure actZoomToWidthExecute(Sender: TObject);
        procedure speZoomChange(Sender: TObject);
        procedure actFirstExecute(Sender: TObject);
        procedure actPriorExecute(Sender: TObject);
        procedure actLastExecute(Sender: TObject);
        procedure actFirstUpdate(Sender: TObject);
        procedure actNextUpdate(Sender: TObject);
        procedure spePageChange(Sender: TObject);
        procedure qrpPreviewPageAvailable(Sender: TObject; PageNum: Integer);
        procedure actPrintExecute(Sender: TObject);
        procedure actPrintSetupExecute(Sender: TObject);
        procedure actOpenExecute(Sender: TObject);
        procedure actRptSaveExecute(Sender: TObject);
        procedure actCloseExecute(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        FPageCount: Integer;    function GetQRPrinter: TQRPrinter;
        procedure SetQRPrinter(const Value: TQRPrinter);
        procedure EnableActions(const AEnabled: Boolean);
      public
        { Public declarations }
        property QRPrinter: TQRPrinter read GetQRPrinter write SetQRPrinter;    procedure Back;
      end;implementationuses StdTypes, CtrlFrm;{$R *.DFM}{ TReportForm }function TReportForm.GetQRPrinter: TQRPrinter;
    begin
      Result := qrpPreview.QRPrinter
    end;procedure TReportForm.SetQRPrinter(const Value: TQRPrinter);
    begin
      qrpPreview.QRPrinter := Value
    end;procedure TReportForm.FormCloseQuery(Sender: TObject;
      var CanClose: Boolean);
    begin
      QRPrinter := nil;  inherited;
    end;procedure TReportForm.Back;
    begin
      QRPrinter := nil;
    //  NextPage := PrevPage;
    //  ChangePage
    end;procedure TReportForm.actExitExecute(Sender: TObject);
    begin
      inherited;  Back
    end;procedure TReportForm.actZoomToFitExecute(Sender: TObject);
    begin
      inherited;  qrpPreview.ZoomToFit;
      speZoom.Value := qrpPreview.Zoom;
      (Sender as TAction).Checked := True
    end;procedure TReportForm.actActualSizeExecute(Sender: TObject);
    begin
      inherited;  speZoom.Value := 100;
      (Sender as TAction).Checked := True
    end;procedure TReportForm.actZoomToWidthExecute(Sender: TObject);
    begin
      inherited;  qrpPreview.ZoomToWidth;
      speZoom.Value := qrpPreview.Zoom;
      actZoomToWidth.Checked := True
    end;procedure TReportForm.speZoomChange(Sender: TObject);
    begin
      inherited;  qrpPreview.Zoom := speZoom.Value
    end;procedure TReportForm.actFirstExecute(Sender: TObject);
    begin
      inherited;  spePage.Value := 1;
    end;procedure TReportForm.actPriorExecute(Sender: TObject);
    begin
      inherited;  with Sender as TAction do
        spePage.Value := qrpPreview.PageNumber + Tag
    end;procedure TReportForm.actLastExecute(Sender: TObject);
    begin
      inherited;  spePage.Value := FPageCount
    end;procedure TReportForm.actFirstUpdate(Sender: TObject);
    begin
      inherited;  with spePage do
        (Sender as TAction).Enabled := qrpPreview.PageNumber > MinValue;
      spePage.Enabled := spePage.MaxValue > spePage.MinValue;
    end;procedure TReportForm.actNextUpdate(Sender: TObject);
    begin
      inherited;  with spePage do
        (Sender as TAction).Enabled := qrpPreview.PageNumber < MaxValue
    end;procedure TReportForm.spePageChange(Sender: TObject);
    begin
      inherited;  if (spePage.Value >= spePage.MinValue) and
        (spePage.Value <= spePage.MaxValue) then begin
        qrpPreview.PageNumber := spePage.Value;
        stbStatus.Panels[1].Text := Format('%d-%d',
          [qrpPreview.PageNumber, FPageCount]);
      end
    end;procedure TReportForm.qrpPreviewPageAvailable(Sender: TObject;
      PageNum: Integer);
    var
      FText: string;
    begin
      inherited;  // yjc Add This 2000.07.20  22:27
      tlbtnZoomToWidth.Down := True;
      actZoomToWidth.Execute;
      FPageCount := QRPrinter.PageCount;
      spePage.MaxValue := PageNum;
      stbStatus.Panels[1].Text := Format('1-%d', [PageNum]);  FText := QRPrinter.Title;
      if FText <> EmptyStr then
        FText := FText + ' - ';
      case QRPrinter.Status of
        mpReady: FText := FText + SQRReady;
        mpBusy: begin
         FText := FText + SQRBusy;
          EnableActions(False)
        end;
        mpFinished: begin
            FText := FText + SQRFinished;
            spePage.Value := 1;
            EnableActions(True)
          end
      end;
      stbStatus.Panels[0].Text := FText;
    end;procedure TReportForm.actPrintExecute(Sender: TObject);
    begin
      inherited;  with Sender as TAction do begin
        Enabled := False;
        QRPrinter.Print;
        Enabled := True
      end
    end;procedure TReportForm.actPrintSetupExecute(Sender: TObject);
    begin
      inherited;  QRPrinter.PrintSetup
    end;procedure TReportForm.actOpenExecute(Sender: TObject);
    begin
      inherited;  if OpenDialog.Execute then begin
        if FileExists(OpenDialog.FileName) then begin
          QRPrinter.Load(OpenDialog.FileName);
          qrpPreviewPageAvailable(nil, QRPrinter.PageCount);
          qrpPreview.PreviewImage.PageNumber := 1;
        end
      end
    end;procedure TReportForm.EnableActions(const AEnabled: Boolean);
    var
      i: Integer;
    begin
      for i := 0 to alActions.ActionCount - 1 do
        (alActions[i] as TAction).Enabled := AEnabled;
      speZoom.Enabled := AEnabled;
      spePage.Enabled := AEnabled;
    end;procedure TReportForm.actRptSaveExecute(Sender: TObject);
    var
      AExportFilter: TQRExportFilter;
    begin
      inherited;  SaveDialog.Filter := QRExportFilterLibrary.SaveDialogFilterString;
      if SaveDialog.Execute then
        if SaveDialog.FilterIndex = 1 then
          QRPrinter.Save(SaveDialog.FileName)
        else begin
          AExportFilter := TQRExportFilterLibraryEntry(
           QRExportFilterLibrary.Filters[SaveDialog.FilterIndex - 2]).
            ExportFilterClass.Create(SaveDialog.Filename);
          try
            QRPrinter.ExportToFilter(AExportFilter);
          finally
            AExportFilter.Free
          end
        end
    end;procedure TReportForm.actCloseExecute(Sender: TObject);
    begin
      //TControlForm(ParentForm).ClosingReport;
      Back
    end;end.
      

  3.   

    To smallbridge() :
     我要用这一个预览界面预览三个内容不一样的报表!
      

  4.   

    unit mypriv;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      QRPrntr, StdCtrls, Buttons, ToolWin, ComCtrls, ExtCtrls;type
      TForm2 = class(TForm)
        QRPreview1: TQRPreview;
        ToolBar1: TToolBar;
        SpeedButton1: TSpeedButton;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        SpeedButton5: TSpeedButton;
        SpeedButton6: TSpeedButton;
        SpeedButton7: TSpeedButton;
        SpeedButton8: TSpeedButton;
        SpeedButton9: TSpeedButton;
        SpeedButton10: TSpeedButton;
        SpeedButton11: TSpeedButton;
        Bevel3: TBevel;
        Bevel4: TBevel;
        FontDialog1: TFontDialog;
        Bevel1: TBevel;
        StatusBar1: TStatusBar;
        procedure BitBtn1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure SpeedButton4Click(Sender: TObject);
        procedure SpeedButton1Click(Sender: TObject);
        procedure SpeedButton2Click(Sender: TObject);
        procedure SpeedButton3Click(Sender: TObject);
        procedure SpeedButton6Click(Sender: TObject);
        procedure SpeedButton5Click(Sender: TObject);
        procedure SpeedButton8Click(Sender: TObject);
        procedure SpeedButton10Click(Sender: TObject);
        procedure SpeedButton9Click(Sender: TObject);
        procedure SpeedButton7Click(Sender: TObject);
        procedure SpeedButton11Click(Sender: TObject);
      private
       i:integer; { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation
    {$R *.DFM}procedure TForm2.BitBtn1Click(Sender: TObject);
    begin
      close;
    end;procedure TForm2.FormCreate(Sender: TObject);
    begin
       i:=100;
    end;procedure TForm2.SpeedButton4Click(Sender: TObject);
    begin
      close;
    end;procedure TForm2.SpeedButton1Click(Sender: TObject);
    begin
       i:=i+5;
       qrpreview1.Zoom:=i;
    end;procedure TForm2.SpeedButton2Click(Sender: TObject);
    begin
      i:=i-5;
      qrpreview1.Zoom:=i;
    end;procedure TForm2.SpeedButton3Click(Sender: TObject);
    begin
       QRPreview1.QRPrinter.Print;
    end;procedure TForm2.SpeedButton6Click(Sender: TObject);
    begin
       i:=100;
       qrpreview1.Zoom:=90;
    end;procedure TForm2.SpeedButton5Click(Sender: TObject);
    begin
      qrpreview1.Zoom:=100;
    end;procedure TForm2.SpeedButton8Click(Sender: TObject);
    begin
       qrpreview1.PageNumber:=1;
    end;procedure TForm2.SpeedButton10Click(Sender: TObject);
    begin
       qrpreview1.PageNumber:=qrpreview1.PageNumber-1;
    end;
    procedure TForm2.SpeedButton9Click(Sender: TObject);
    begin
       qrpreview1.PageNumber:=qrpreview1.PageNumber+1;
    end;procedure TForm2.SpeedButton7Click(Sender: TObject);
    begin
        qrpreview1.PageNumber:=qrpreview1.QRPrinter.PageCount;
    end;procedure TForm2.SpeedButton11Click(Sender: TObject);
    begin
        qrpreview1.QRPrinter.PrintSetup;
    end;end.
      

  5.   

    unit mypriv;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      QRPrntr, StdCtrls, Buttons, ToolWin, ComCtrls, ExtCtrls;type
      TForm2 = class(TForm)
        QRPreview1: TQRPreview;
        ToolBar1: TToolBar;
        SpeedButton1: TSpeedButton;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        SpeedButton5: TSpeedButton;
        SpeedButton6: TSpeedButton;
        SpeedButton7: TSpeedButton;
        SpeedButton8: TSpeedButton;
        SpeedButton9: TSpeedButton;
        SpeedButton10: TSpeedButton;
        SpeedButton11: TSpeedButton;
        Bevel3: TBevel;
        Bevel4: TBevel;
        FontDialog1: TFontDialog;
        Bevel1: TBevel;
        StatusBar1: TStatusBar;
        procedure BitBtn1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure SpeedButton4Click(Sender: TObject);
        procedure SpeedButton1Click(Sender: TObject);
        procedure SpeedButton2Click(Sender: TObject);
        procedure SpeedButton3Click(Sender: TObject);
        procedure SpeedButton6Click(Sender: TObject);
        procedure SpeedButton5Click(Sender: TObject);
        procedure SpeedButton8Click(Sender: TObject);
        procedure SpeedButton10Click(Sender: TObject);
        procedure SpeedButton9Click(Sender: TObject);
        procedure SpeedButton7Click(Sender: TObject);
        procedure SpeedButton11Click(Sender: TObject);
      private
       i:integer; { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation
    {$R *.DFM}procedure TForm2.BitBtn1Click(Sender: TObject);
    begin
      close;
    end;procedure TForm2.FormCreate(Sender: TObject);
    begin
       i:=100;
    end;procedure TForm2.SpeedButton4Click(Sender: TObject);
    begin
      close;
    end;procedure TForm2.SpeedButton1Click(Sender: TObject);
    begin
       i:=i+5;
       qrpreview1.Zoom:=i;
    end;procedure TForm2.SpeedButton2Click(Sender: TObject);
    begin
      i:=i-5;
      qrpreview1.Zoom:=i;
    end;procedure TForm2.SpeedButton3Click(Sender: TObject);
    begin
       QRPreview1.QRPrinter.Print;
    end;procedure TForm2.SpeedButton6Click(Sender: TObject);
    begin
       i:=100;
       qrpreview1.Zoom:=90;
    end;procedure TForm2.SpeedButton5Click(Sender: TObject);
    begin
      qrpreview1.Zoom:=100;
    end;procedure TForm2.SpeedButton8Click(Sender: TObject);
    begin
       qrpreview1.PageNumber:=1;
    end;procedure TForm2.SpeedButton10Click(Sender: TObject);
    begin
       qrpreview1.PageNumber:=qrpreview1.PageNumber-1;
    end;
    procedure TForm2.SpeedButton9Click(Sender: TObject);
    begin
       qrpreview1.PageNumber:=qrpreview1.PageNumber+1;
    end;procedure TForm2.SpeedButton7Click(Sender: TObject);
    begin
        qrpreview1.PageNumber:=qrpreview1.QRPrinter.PageCount;
    end;procedure TForm2.SpeedButton11Click(Sender: TObject);
    begin
        qrpreview1.QRPrinter.PrintSetup;
    end;end.
      

  6.   

    打印多个表
    ith QRCompositeReport1.Reports do
    begin
      Clear;
      if radiobutton1.Checked then
      begin
      add(form1.quickrep1);
      exit;
      end;
      add(dy_gbllbform.QuickRep1 );
      add(dy_gbllb_1form.QuickRep1 );
      add(dy_gbllb_2form.quickrep1);
      add(dy_gbllb_3form.quickrep1);
      add(dy_gbllb_4form.quickrep1);
       add(dy_gbllb_4form.quickrep1);
       add(dy_gbllb_4form.quickrep1);
      add(dy_gbllb_5form.quickrep1);
        add(dy_gbllb_5form.quickrep1);
        add(dy_gbllb_5form.quickrep1);
      add(dy_gbllb_6form.quickrep1);
      add(dy_gbllb_7form.quickrep1);
      add(dy_gbllb_8form.quickrep1);
     end;
    end;
      

  7.   

    为什么我的问题没有人回答呀!是DLL做一个打印
      

  8.   

    下边也是一种多表打印的方法
    procedure TForm.QRCompositeReport1AddReports(Sender: TObject);
    begin
      with QRCompositeReport1.Reports do
       begin
         clear;
         if radiobutton1.Checked then
         begin
           add(form3.QuickRep1);
           exit;
         end;
         add(form3.QuickRep1);
         add(form4.quickrep1);
         add(form5.quickrep1);
         add(Form6.QuickRep1);
         add(Form7.QuickRep1 );
         add(Form8.QuickRep1 ) ;
         end;
       end;
    end;