Delphi多栏打印的QuickReport实现计算机等级考试

文章作者 100test 发表时间 2009:07:07 21:54:14
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  在很多有关Delphi的书籍中,都没有讲解如何实现一个打印项的多栏打印,而现实生活中往往有许多报表要求同一项目多栏打印。QuickReport提供了报表打印一整套完整的解决方案,完全可以实现同一项目的多栏打印。
  如果在Treport的DataSet属性中选定一个Table,那么 QuickReport每次打印详细列表(BandType=rbDetail)属性的TQRBand时,系统会自动取出一个记录供打印,并将表中的记录指针移到下一位,这样程序无法控制表中记录指针的移动,就无法实现多栏打印。因此,只要程序不在Treport的DataSet属性选定任何表, QuickReport便不会控制表记录的提取。
  QuickReport特为其它类型数据打印提供了一个OnNeedData事件,QuickReport每次打印详细列表属性的TQRBand时,会触发这个事件,要求提供打印数据,如果程序在OnNeedData事件中编写运用表中数据提供打印资料,便能实现多栏打印。现例举实现一个Table1中Name项两栏打印的方法。
  1.在窗口上放TquickReport组件
  quickReport1,并在上面放Tband组件band1,将其BandType属性改为Detail。然后在Tband组件上并排放两个QRLabel组件QRLabel1和QRLabel2,并在quickReport1的 OnNeedData事件中写如下代码:
  procedure TForm1.QuickRep1NeedData(Sender: TObject. var MoreData: Boolean).
  var
  I: integer.
  begin
  MoreData := True.
  for I:= 1 to 2 do
  begin
  if Table1.Eof then Break.
  case I of
  1: QRLabel1.Caption := Table1.FieldByName(′Name′).AsString.
  2: QRLabel2.Caption := Table1.FieldByName(′Name′).AsString.
  end.
  Table1.Next.
  end.
  if Table1.Eof then MoreData := False.
  end.
  2. 为了保证打印或者打印预览开始时Table1指针在第一条记录,在quickReport1的BeforePrint事件中写如下代码:
  procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep.
  var PrintReport: Boolean).
  begin
  Table1.First.
  end.
  这样,程序调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于Name的从左至右、从上到下的多栏报表。

相关文章


Delphi状态栏动态进度条实现代码计算机等级考试
显示鼠标指示地方的全部文本计算机等级考试
Delphi窗口分割并动态调节其大小计算机等级考试
Delphi多栏打印的QuickReport实现计算机等级考试
Delphi获取系统支持颜色代码计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛