在QuickReport中实现多栏打印
2024-10-14 05:51:52
如果在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
QRLabel1.Caption := '';
QRLabel2.Caption := ''; MoreData := True;
if Table1.Eof then MoreData := False; for I:= to do
begin
if Table1.Eof then Break; case I of
: QRLabel1.Caption := Table1.FieldByName('Name').AsString;
: QRLabel2.Caption := Table1.FieldByName('Name').AsString;
end; Table1.Next;
end;
end;
2. 为了保证打印或者打印预览开始时Table1指针在第一条记录,在quickReport1的BeforePrint事件中写如下代码:
procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Table1.First;
end;
这样,程序调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于Name的从左至右、从上到下的多栏报表。
最新文章
- 转载:AbstractQueuedSynchronizer的介绍和原理分析
- Redis集群(六):集群常用命令及说明
- Android学习笔记——download
- ECshop导入淘宝数据包乱码问题解决方法
- 利用zip(或者phar)协议进行本地文件包含
- EXCEL,熟悉又不熟悉的项目管理工具
- [Android]在Dagger 2中Activities和Subcomponents的多绑定(翻译)
- C#常用正则验证
- HDU1205 吃糖果
- Mysql取随机数据效率测试(400W条中读取100条)
- 总结JAVA----IO流中的File类
- ORACLE11g 重装系统后根据dbf恢复数据库
- c#处理json数据最好的方式,没有之一。
- 第五篇——Struts2的默认Action
- simhash文章排重
- awk的些许小技巧
- Memcached 总结 启动多个Memcached服务 配置文件详解
- 使用odbc时报错,驱动程序和应用程序之间的体系结构不匹配
- SpringMvc-ModelAndView 结果出不来 显示路径问题 解决办法
- 设备树(Device Tree)