在Delphi 3中制作报表预览窗体

Author: 若冰 Date: 1998年 第32期 13版

  Borland Delphi 3.0提供了Quick Report部件,使得报表的制作更加灵活方便,利用QuickRep的Preview方法可以预览报表。但美中不足的是,预览窗体中的提示皆为英文。利用Quick Report部件已有的功能,开发一个自己的报表预览窗体并不困难。下面介绍制作的步骤:
  1.新建一个窗体,起名为“MyPrevForm”,设置Visible属性为“False”,以“Preview”为单元名保存该单元。
  2.插入两个TPanel控件到窗体中,分别设置Panel1、Panel2的Align属性为“alTop”、“alBottom”,设置Panel1的ShowHint属性为“True”。
  3.向窗体中插入一个TQRPreview对象,取名为“QRPreview”,其Align属性设置为“alClient”。
  4.插入一个TOpenDialog对象和一个TSaveDialog对象到窗体中。
  5.设计工具条:在Panel1上添加11个TspeedButton控件,分别完成以下功能:整页显示、100%比例显示、按页宽显示、第一页、上一页、下一页、最后一页、打开报表文件、保存报表文件、打印设置、打印。设置“整页显示”、“100%比例显示”、“按页宽显示”三个按钮的GroupIndex属性为1,“按页宽显示”按钮的Down属性设置为True。
  6.在Panel2上添加两个Label,分别命名为lbPageNo、lbPageCount。
  7.添加代码:
  1)给QRPreview的OnPageAvailable事件添加语句:
  lbPageCount.Caption:=′共′+IntToStr(QRPreview.QRPrinter.PageCount)+′页′;
  2)向各按钮的OnClick事件中添加语句:
  A.整页显示按钮:
  QRPreview.ZoomToFit;
  B.100%比例显示按钮:^321301a^
  QRPreview.Zoom:=100;
  C.按页宽显示按钮:
  QRPreview.ZoomToWidth;
  D.至第一页按钮:
  QRPreview.PageNumber:=1;
  lbPageNo.Caption:=′第1页′;
  E.向前翻页按钮:
  if QRPreview.PageNumber>1 then
  begin
  QRPreview.PageNumber:=QRPreview.PageNumber-1;
  lbPageNo.Caption:=′第′+IntToStr(QRPreview.PageNumber)+′页′;
  end;
  F.向后翻页按钮:
  if QRPreview.PageNumber<QRPreview.QRPrinter.PageCount then
  begin
  QRPreview.PageNumber:=QRPreview.PageNumber+1;
  lbPageNo.Caption:=′第′+IntToStr(QRPreview.PageNumber)+′页′;
  end;
  G.至最后一页按钮:
  QRPreview.PageNumber:=QRPreview.QRPrinter.PageCount;
  lbPageNo.Caption:=′第′+IntToStr(QRPreview.QRPrinter.PageCount)+′页′;
  H.打开文件按钮:
  if OpenDialog1.Execute then
  QRPreview.QRPrinter.Load(OpenDialog1.FileName);
  I.保存报表按钮:
  if SaveDialog1.Execute then
  QRPreview.QRPrinter.Save(SaveDialog1.FileName);
  J.打印设置按钮:
  QRPreview.QRPrinter.PrintSetup;
  K.打印报表按钮:
  QRPreview.QRPrinter.Print;
  8.保存该单元。
  为在程序运行时用刚设计的预览窗体替代Quick Report提供的预览窗体,请在已建立的报表单元的implementation部分加上:uses Preview;并给TQuickRep控件的OnPreview事件添加代码:
  MyPrevForm.QRPreview.QRPrinter:=QuickRep1.QRPrinter;
  MyPrevForm.Show;
  到此,在运行期间调用TquickRep的Preview方法来预览报表,看到的就是刚创建的预览窗体了。