rave 問題至少100分,分不鉤可以再加 有一數據源 name password sex 001 001 1 002 002 0 003 003 0 004 004 1 ... 100 100 1 實現 name password sex name password sex 001 001 1 021 021 0 002 002 0 022 022 1 ... ... 020 020 1 040 040 0 --->此為一頁內容 假定一頁顯示20條記錄 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 所有有关Delphi的书籍中,都没有讲解如何实现一个打印项的多栏打印,而实现生活中往往有许多报表要求同一项目多栏打印,QuickReport提供了报表打印一整套完整的解决方案,完全可以实现同一项目的多栏打印,技术关键是如何控制表中记录提取个数,如果在Treport的DataSet属性中选定一个Table,那么QuickReport每次打印详细列表(BandType=rbDetail)属性的TQRBand时,系统会自动取出一个记录供打印,并将表中的记录指针移到下一位,这样程序无法控制表中记录指针的移动,就无法实现多栏打印,只要程序不在Treport的DataSet属性选定任何表, QuickReport便不会控制表记录的提取,QuickReport特为其它类型数据打印提供了一个OnNeedData事件,QuickReport 每次打印详细列表(BandType=rbDetail)属性的TQRBand时,会触发这个事件,要求提供打印数据,如果程序在OnNeedData事件中编写运用表中数据提供打印资料,便能实现多栏打印,现举例说明:---- 现在要实现一个Table1中Name项两栏打印,在窗口上放TquickReport组件 quickReport1,并在上面放Tband组件band1,将其BandType属性改为Detail,在Tband 组件上并排放两个QRLabel组件QRLabel1和QRLabel2,在quickReport1的OnNeedData事件中写如下代码:procedure TForm1.QuickRep1NeedData(Sender:TObject; var MoreData: Boolean);varI: integer;beginMoreData := True;for I:= 1 to 2 dobeginif Table1.Eof then Break;case I of1: QRLabel1.Caption :=Table1.FieldByName('Name').AsString;2: QRLabel2.Caption :=Table1.FieldByName('Name').AsString;end;Table1.Next;end;if Table1.Eof then MoreData := False;end;---- 为了保证打印或者打印预览开始时Table1指针在第一条记录,在quickReport1的 BeforePrint事件中写如下代码:procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;var PrintReport: Boolean);beginTable1.First;end;---- 这样程序调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于 Name的从左至右,从上到下的多栏报表。 GoldShield(小花☆正直人) 多謝 不過我現在用的是rave 望指點一二 二樓兄台 怎麼實現 能否給我代碼先 怎么实现bpl各form间共用一个数据库模块 Delphi中如何打开Execl表! 请教 搜索网段内MS SQL Server 服务器的API 如果制作U盘启动盘啊!? 一个关于邮件的问题? 使用Delphi 7中IDHttp组件,get时返回415 unsupport media type 有关VPN的问题? 请大虾指点,救命呀(IHTMLFramesCollection的难题) 如何将一个位图对象打印出来? 如何用delphi6控制excel?急啊~~~~~~~~~~! 救教一个用QUERY创建数据库的问题 usb移动硬盘写入的问题
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货