Quickreport万能打印程序
来源:互联网 发布:手机怎么做淘宝 编辑:程序博客网 时间:2024/06/05 02:10
作程序经常使用报表打印,使用delphi编程最长用的是使用quickreport做报表打印,rave是在delphi7中才出现的,我用quickreport做了一个万能打印程序,由于时间紧迫,没有时间优化和美化,欢迎网友修改。
他的基本思想是:动态的取dataset中的列,动态的生成报表,程序如下:
unit unit_QReport_lxr;
interface
uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, DB, ADODB,Dialogs;
type
TQReport_lxr = class(TQuickRep)
DetailBand1: TQRBand;
TitleBand1: TQRBand;
bb_title: TQRLabel;
ColumnHeaderBand1: TQRBand;
private
public
function bb_prepare(objAdoQuery:TDataSet;haveFirstCol:boolean):boolean;
end;
var
QReport_lxr: TQReport_lxr;
implementation
{$R *.DFM}
function TQReport_lxr.bb_prepare(objAdoQuery:TDataSet;haveFirstCol:boolean):boolean;
file://haveFirstCol:boolean;是否打印dataset中的第一列,true打印,false 不打印
var
la:TQRLabel ;
te:TQRDBText;
row_la:integer;
row_te:integer;
re_width:integer;
left_bj:integer;
i:integer;
j:integer;
m:integer;
hafn:integer;
begin
if (objAdoQuery.Fields.Count<=0)then
begin
messagedlg('请您先做查询,再打印报表!',mtInformation,[mbyes],0);
result:=false;
exit;
end;
self.DataSet:=objAdoQuery;
if objAdoQuery.RecordCount<>0 then
begin
row_la:=0;
row_te:=0;
left_bj:=0;
j:=0;
re_width:=DetailBand1.Width;
m:=re_width div 100;
file://注意:是否放弃objAdoquery中的第一列
if haveFirstCol
then hafn:=0
else hafn:=1;
for i:=hafn to objAdoQuery.FieldCount-1 do
begin
if j=m then
begin
left_bj:=0;
row_la:=row_la+1;
row_te:=row_te+1;
j:=0;
ColumnHeaderBand1.Height:=ColumnHeaderBand1.Height+27;
DetailBand1.Height:=DetailBand1.Height+27;
end;
la:=TQRLabel.Create(self);
la.Caption:=objAdoQuery.Fields[i].FieldName;
la.Width:=100;
la.Height:=17;
la.Left:=left_bj;
la.Top:=30+(la.Height+10)*row_la;
la.Parent:=ColumnHeaderBand1 ;
te:=TQRDBText.Create(self);
te.DataSet:=objAdoQuery;
te.DataField:=objAdoQuery.Fields[i].FieldName;
te.Width:=100;
te.Height:=17;
te.Left:=left_bj;
te.Top:=30+(te.Height+10)*row_te;
te.Parent:=DetailBand1;
te.AutoStretch:=true;
left_bj:=(j+1)*105;
j:=j+1;
end;
end;
result:=true;
end;
end.
调用程序如下:
procedure TFrm_sbcx_yin.BitBtn_xxxx_dyClick(Sender: TObject);
var
qp:TQReport_lxr;
begin
qp:=TQReport_lxr.Create(self);
qp.bb_title.Caption:='设备类别查询';
if qp.bb_prepare(ADOQuery_xxxx,false)
then begin
qp.Prepare;
qp.Preview;
qp.hide;
end;
qp.free;
end;
- Quickreport万能打印程序
- QuickReport通用报表打印程序
- quickreport
- QuickReport讀數據打印並分頁,預覽定制
- 用QuickReport实现Delphi多栏打印
- delphi quickreport 打印时报 stackoverflow问题处理
- 万能程序
- DeveloperExpress GridControl 万能打印
- DeveloperExpress GridControl 万能打印
- QuickReport 多字段的分页打印(1)
- QuickReport在Win2000中实现自定义纸张的打印方法
- 精锐万能票据打印专家
- 利用webBrowser实现万能打印
- 万能数据库连接程序
- 万能的数据库连接程序
- 万能的数据库连接程序
- ”万能查重器“小程序
- 万能的数据库连接程序
- 何为博客?
- JavaScript 结合 CSS 制作带背景图的下拉菜单
- 郁闷呀!!!
- zt:如何显示中文化的打印设置对话框?
- zt:如何显示中文化的打印预览对话框
- Quickreport万能打印程序
- zt:用RAVA做主从关系报表
- PDA和蓝牙模块之间的通信问题!
- 求助?????关于网络硬盘?
- 一个关于在VB.NET中应用超级解霸的问题
- 读《C# Primer》笔记2
- Thinking in Delphi:语言的变革
- 可爱的 Python:用 Psyco 让 Python 运行得像 C 一样快
- help:如何將一個軟件漢化