很有挑战的题目,怎样动态打印报表,打印一个DBGrid中的数据,可以调节字段所占宽度(20分)

C

cjhk007

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样动态打印报表,打印一个DBGrid中的数据,可以调节字段所占宽度,而表表跟随着变化
 
不太明白讲什么,直接写不就行了,或用DBGRIDEH这类的控件...
 
用个第三方空间不就行了?!
个人推荐:
http://www.smartparter.com/download/ReportExpert20.zip
好用的话,给我分!
 
有实例给我得话,我给分,lsssxs@360cn.com(是frintreport得dbgrid)
 
RapidReport2.1,一组Delphi报表控件,核心基于"TDBGrid",适用Delphi5,Delphi6,Delphi7,C++Buidle5。
特点是:快速制表、减轻了报表编程的工作量、执行程序对用户操作报表来说是"灵活,有余地"。
功能:
1、超强设计期、运行期编辑能力,可以在设计期设计、调整报表格式,运行期调整报表格式和内容;
2、所见即所得的制表功能,符合国人使用习惯的标尺系统;报表格式定位精度0.1毫米;
3、 可以将报表格式输出到文件中保存;可以将报表输出为Excel文件保存;可以实现报表数据汇总功能;
4、控件内置预览功能,实现打印预览及打印输出的无级缩放;
5、完全适应各类型,各分辩率的打印机;有打印进纸微调接口(调整应用开发者测试用打印机与最终用户端打印机之间的进纸差异);
6、实现精确票据打印(见 Demo; 一般设属性 Visible = False, DataSource = nil, 即不使用数据库能力):借助于"DBR"报表格式文件,票据格式的变化只需重新分发(或用户编辑)相应的"DBR"格式文件,不影响用户程序。
下载地址:
中国电信1:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=3
中国电信2:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=4
中国电信3:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=1
有线通1:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=5
有线通2:
http://download.pchome.net/php/download2.php?sid=13339&url=/development/delphi/zRapidReport21.exe&svr=6
 
用第三方控件就用FastReport吧,使用代码动态建立报表
....
frmRpt.frRptSmt.Pages.Clear;
frmRpt.frRptSmt.Pages.Add;
// 建立报表页
Page := frmRpt.frRptSmt.Pages[0];
b:= TfrBandView(frCreateObject(gtBand, ''));
// 页首Band
b.SetBounds(0, 20, 0, 20);
b.BandType := btPageHeader;
Page.Objects.Add(b);
v := frCreateObject(gtMemo, '');
// 页首Band上的标题Memo
v.SetBounds(20, 20, 150, 16);
v.FrameTyp:=15;
v.FrameWidth:=1;
v.BandAlign:=baCenter;
v.Memo.Add('加入页标题');
Page.Objects.Add(v);
b := TfrBandView(frCreateObject(gtBand, ''));
// 主数据 band
b.SetBounds(0, 60, 0, ColHg);
b.Columns:=4;
b.ColumnWidth:=ColWd;
b.ColumnGap:=0;
b.BandType := btMasterData;
Page.Objects.Add(b);
v := frCreateObject(gtMemo, '');
// 主数据 band上的数据Memo
v.SetBounds(20, 60, ColWd, ColHg);
//colwd ColHg是列的宽度和高窟
v.FrameWidth:=1;
v.FrameTyp:=15;
v.Memo.Add('[dmMain.adoqryFrame."CrName"]');
Page.Objects.Add(v);
v := frCreateObject(gtMemo, '');
// 主数据 band上的数据
v.SetBounds(20, 60, ColWd, HgDiv3);
v.Memo.Add('[dmMain.adoqryFrame."Port"]');
Page.Objects.Add(v);
 
顶部