FastReport设计相关技巧.docx
《FastReport设计相关技巧.docx》由会员分享,可在线阅读,更多相关《FastReport设计相关技巧.docx(17页珍藏版)》请在冰点文库上搜索。
FastReport设计相关技巧
1、打印套版功能介绍:
如何实现连打以及选择打印机?
如下图所示:
1)查询数据:
选择多张单据进行连打;
2)是否选择打印机:
是:
打印时会弹出选择打印机的窗口;
否:
打印时会存储为XPS格式的文档。
XPS是一种版面配置固定的电子文件格式,可以保存文件格式,而且具有档案共享的功能。
在在线检视或打印XPS档案时,可以确保其格式与您希望的一样,而且其它使用者无法轻易变更档案中的数据。
2、FASTREPORT中一些常用属性的介绍及用法?
页面属性说明:
PrintOnPreviousPage:
本页可否打印在上页的剩余空间。
应用举例:
多张连打时,如果上页还有空间,如何将下页接着打印?
设置PrintOnPreviousPage为True.
头属性说明:
AllowSplit:
页面内容是否可跨页打印。
ReprintOnNewPage:
在每页重复打印。
应用举例:
表头内容要在每页都显示(包括LOGO)?
设置:
ReprintOnNewPage为True.
主数据域属性说明:
RowCount:
控制总共打印几行;RowCount=0是打印全部;
StartNewPage:
打印前先跳页;每页打印一行;
Stretch:
表身自动伸缩根据表身内容;
应用举例:
单据中有多行数据,但预览时每页只看到一行,且只有一页有显示?
或者打印内容行与行之间有间隔?
设置RowCount=0,StartNewPage为False;Stretched为True.
3、一些常用的属性说明?
明细数据域的一些常见属性说明:
AutoWidth:
自动调整文本的宽度;
Datafield:
数据库的字段名称;
DataSet:
连接至数据库;
DisplayFormat:
数据显示格式
应用举例:
在打印的金额或数量的小数位数?
%2.2f:
显示两位小数;
%2.3f:
显示三位小数位。
FlowTo:
对象内容无法容纳时显示至其它对象;选择显示至的对象。
HideZeros:
数字前面的0是否显示。
应用举例:
当栏位的值为零时显示为空?
设置HideZeros为True
Rotation:
旋转文本。
StretchMode:
对象伸缩的行为;
WordWrap:
文本是否自动换行;
应用举例:
表身栏位数据很长时,如何自动调整行高,自动换行?
1)选择数据单元进行群组;
2)StretchMode为smMaxHtight;WordWrap为True.
SuppressRepeated:
重复的值不打印,显示为空。
Underlines:
文本对象下划线;
URL:
统一资源定位,可输入网址,预览时点击即可打开网页。
4、如何打印合计?
解决方案:
每页合计:
将定义好的合计函数放到‘栏尾’中即可。
全表合计:
将定义好的合计函数放到‘报表合计’中即可。
5、如何将小写转换为大写,例如将金额由数字转换为大写?
解决方案:
大小写转换:
在报表设计中使用函数:
ConbertNumToChinese()
6、如何在套版中插入图片?
解决方案:
插入图片:
7、常用变量介绍
解决方案:
公司变量:
COMPNO:
帐套代号
NAME:
帐套名称
操作员变量:
用户代号:
当前登陆系统的用户的代号
用户名称:
当前登陆系统的用户的名称
单据录入人名称:
单据制单人
单据审核人名称:
单据终审人
系统变量:
Date:
自动抓取当前系统的日期(年月日)
Time:
自动抓取当前系统的时间(时分秒)
Page:
当前页码
TotalPages#:
总页数
Line#:
总行数
8、FastReport打印固定行数,不足补空白行。
解决方案:
1)写入下列代码:
var
PageLine:
integer;//在现在页列印到第几行
PageMaxRow:
integer=7;//设定每页列数
procedureFooter1OnBeforePrint(Sender:
TfrxComponent);
var
i:
integer;
begin
i:
=iif(PageLine=0,PageMaxRow,PageLine);
whileii:
=i+1;
Engine.ShowBand(Child1);//印空白表格
end;
end;
procedureMasterData1OnBeforePrint(Sender:
TfrxComponent);
begin
PageLine:
=modPageMaxRow;
if(PageLine=1)and(>1)then
Engine.newpage;
end;
begin
end.
其中procedureMasterData1OnBeforePrint(Sender:
TfrxComponent);中的MasterDate1是和套版表身所在栏对应
2、如果要把表头也带下来,那么需要把REPRINTONNEWPAGE勾给打上.
2)进行设置:
*单据内容补空白,项次则显示全部
(1)语句如下:
var
PageLine:
integer;//在现在页列印到第几行
PageMaxRow:
integer=15;//设定每页列数
procedureFooter1OnBeforePrint(Sender:
TfrxComponent);
var
i:
integer;
begin
i:
=iif(PageLine=0,PageMaxRow,PageLine);
whileii:
=i+1;memo45.text:
=inttostr(i);
Engine.ShowBand(Child1);//印空白表格
end;
end;
procedureMasterData1OnBeforePrint(Sender:
TfrxComponent);
begin
PageLine:
=modPageMaxRow;
if(PageLine=1)and(>1)then
Engine.newpage;
memo19.text:
=inttostr(PageLine);
end;
begin
end.
(2)图片
9、打印条形码?
解决方案:
首先,在相应单据自定义“条码”栏位
SELECTBar_CodeFROMPRDTWHEREPRD_NO=:
PRD_NO
然后,在套版设计中如下操作即可:
10、每页小计,最后页合计
1)设置为两次报表(报表计算两次)
2)设置小计合计栏位,表尾要用PageFooter
3)脚本语句:
procedureMemo3OnBeforePrint(Sender:
TfrxComponent);
var
page:
integer=;
totalpage:
integer=;
begin
if(page=totalpage)then
memo3.visible:
=true;
end;
begin
end.