⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmqrpt.pas

📁 使用报表打印数据的基本操作方法
💻 PAS
字号:
unit FrmQRpt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, ExtCtrls, printers, qrextra, QRExport, qrprntr, quickrpt, QRCtrls,
  TypInfo;

type
  TQRptFrm = class(TForm)
    Table1: TTable;
    QuickRep1: TQuickRep;
    ColumnHeaderBand1: TQRBand;
    DetailBand1: TQRBand;
    PageFooterBand1: TQRBand;
    PageHeaderBand1: TQRBand;
    SummaryBand1: TQRBand;
    TitleBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel6: TQRLabel;
    QRDBText1: TQRDBText;
    QRDBText2: TQRDBText;
    QRDBText3: TQRDBText;
    QRDBText4: TQRDBText;
    QRExpr1: TQRExpr;
    QRExpr2: TQRExpr;
    QRTextFilter1: TQRTextFilter;
    QRCSVFilter1: TQRCSVFilter;
    QRHTMLFilter1: TQRHTMLFilter;

    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }



    procedure  InitData;
  end;

var
  QRptFrm: TQRptFrm;

implementation

{$R *.dfm}
{
   PageNumber:  在报表生成过程中可以使用该属性来确定正在生成的页;
   PrintIfEmpty:用来指定数据集没有记录时报表的行为,false时不打印,true时打印一个包含页头标,标题,综合栏及页脚的页;
   RecorCount: 数据集里的记录数;
   RecordNumber:报表正在处理的当前记录号,从0开始;
   ShowProcess: 是否显示打印进度条
   State:报表当前的状态;

   可以使用PageSetupDialog来请用户选择纸张、纵横向等设置,如何把用户的设置赋值给QuickPeport的技术细节见主窗口的单元文件;

   注意:如果是直接对QuickPeport的纸张进行赋值,而该纸张在当前系统中并没有安装的话,预览和打印都会出问题;

}

procedure TQRptFrm.FormCreate(Sender: TObject);
begin
    try
        InitData;

        Table1.Open;

        QuickRep1.DataSet     := table1;
        //QuickRep1.Bands       := [HasColumnHeader, HasDetail, HasPageFooter, HasPageHeader, HasTitle];
        QuickRep1.Bands.HasColumnHeader   := true;
        QuickRep1.Bands.HasDetail         := true;
        QuickRep1.Bands.HasPageFooter     := true;
        QuickRep1.Bands.HasPageHeader     := true;
        QuickRep1.Bands.HasTitle          := true;

        QuickRep1.Page.PaperSize  := TQRPaperSize(GetEnumValue(TypeInfo(TQRPaperSize), 'A4'));
        QuickRep1.PrintIfEmpty    := true;

        QRDBText1.DataSet                 := table1;
        QRDBText1.DataField               := 'fID';

        QRDBText2.DataSet                 := table1;
        QRDBText2.DataField               := 'fName';

        QRDBText3.DataSet                 := table1;
        QRDBText3.DataField               := 'fType';

        QRDBText4.DataSet                 := table1;
        QRDBText4.DataField               := 'fDescription';

        QRExpr1.Expression                := '''第''+ PAGENUMBER + ''页''';
        QRExpr2.Expression                := '''当前时间'' + DATE + ''  '' + TIME';
        QRExpr2.AlignToBand               := true;//紧靠着最左边或最右边

        //界面上的QRTextFilter,QRHTMLFilter,  QRCSVFilter的作用是,
        //在预览页面按下保存按钮时,可以将报表生成对应格式的文件

        //打印纸张问题不起作用??


    except
        ShowMessage('QuickReport form rise exception!');

    end;
end;

procedure TQRptFrm.FormShow(Sender: TObject);
begin
    //
end;

procedure TQRptFrm.InitData;
var
    ii  : Integer;
begin
    Table1.DatabaseName   := ExtractFilePath(Application.ExeName) + 'DB';
    Table1.TableType      := ttParadox;
    Table1.TableName      := 'r_User';

    Table1.Close;
    Table1.Open;

    while not table1.Eof do
      Table1.Delete;

    for ii:=1 to 100 do begin
      table1.Insert;
      table1.FieldByName('fID').AsInteger   := ii;
      table1.FieldByName('fName').AsString  := '崔朝' + IntToStr(ii);
    end;
    table1.Post;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -