FastReport.Net v2016.6 FastScript安装 安装 VCL mvc FastReport.Net 报表 FastReport.Net v2016.2 TeeChart,图表开发 FastReport FMX 2.3 FastReport.Net v2016.1 FastReport.Net更新 FastCube VCL v2.5 FastReport VCL FastReport Online Designer教程 FastReport Online Designer组件 FastReport在线报表设计器:组件简介 FastReport在线报表设计器:界面结构简介 FastReport在线报表设计器:工作原理 FastReport Online Designer简介 FastReport Online Designer促销 FastReport Online Designer FastReport.Net授权促销 数据库查询构建 使用技巧 fastreport,报表 脚本引擎 FastScript FastScript, 脚本引擎 OLAP控件
作者:zhuhm 来源:本站原创 浏览:Loading... 日期:2012-11-08
在FastReport报表示例:打印可变栏数或未知栏数的报表中报表的所有栏宽是相等的。可是,在大多数情况下它是需要根据数据确定每栏的宽度。因此,例如,有两个栏,一个栏包含行号而另一个包含memo中的字段,显然第一个栏比另一个包含memo字段的栏的宽度要窄很多。
扩展的源代码放在PRNTBL2子目录中。这个例子除了栏宽是根据数据决定以外,其它的与上一例子相同。这个例子中有两个TfrReport的事件处理程序用于动态改变栏宽。
要根据数据动态定义栏宽,就必须使用TfrReport 对象的OnPrintColumn事件。在这个例子中栏中文本框的宽度由字段的“W”字母宽度的个数决定的;对于“日期和时间”字段,设置宽度为15个字母“W”的宽度;其它所有的栏宽设为64点。
这个OnPrintColumn事件处理的源代码显示如下:
procedure TForm1.frReport1PrintColumn(ColNo: Integer; var Width: Integer);
var
Field: TField;
begin
Field := Table1.Fields[ColNo – 1];
if Field is TStringField then
Width := Field.Size * Canvas.TextWidth('W')
else if Field is TDateTimeField then
Width := 15 * Canvas.TextWidth('W')
else
Width := 64;
FWidth := Width;
end;
OnBeforePrint事件处理中将栏宽设为上面事件处理中定义的宽度:
procedure TForm1.frReport1EnterRect(Memo: TStringList; View: TfrView);
begin
View.dx := FWidth;
end;
在这个例子中由于每个栏的宽度按数据确定,所以报表打印中非常有效地生成了页面。TfrPrintTable和TfrPrintGrid控件在打印TDBGrid和控件内容时就是这样工作的。
上一篇: FastReport报表示例:打印可变栏数或未知栏数的报表
下一篇: FastReport创建报表的几个步骤
慧都科技旗下网站-FastReport中文网版权所有 Copyright 2012
FastReport,报表控件,FastReport报表,VCL报表,.NET报表,COM/ActiveX报表,OLAP控件,联机分析处理