程序员手册
一.使用方法.
安装后,你可以在Delphi控件面板上看到ACReport这个控件。它提供了以下两个重要的属性:
1. DataSets :设置报表用到的所有数据集。当最终用户选取字段时,这里设置的数据集与字段都会呈现出来。
用以下方法可以动态设置或加入一个数据集:
AReport.DataSets.SetDataSet(名称,数据集),如:AReport.DataSets.SetDataSet('主表', Query1)
2.Variants :设置变量名。你可以把一些信息如:公司名称、日期、报表的条件信息等以变量的方式传入报表,以便用户使用。你可以在 BeforePrepare事件中执行如下的语句来生成一个变量或给变量赋值:
AReport.Variants.SetVariant('使用单位名称', Edit2.Text);
AReport.Variants.SetVariant('开始时间', Date());
注册全局变量
一般用户的公司名称、地址、电话等可以注册成全局变量(系统变量),这样每个报表都可以使用。
方法:
包含 AC_Var 单元,然后调用全局对象ACSysVariants的SetVariant方法,如:
uses AC_Var;
...
ACSysVariants.SetVariant('公司名称', 'xxxx有限公司');
3.几个重要的方法:
LoadFromFile 从文件中装入一个报表
LoadFromStream 从流中装入一个报表
LoadFromBlobField 从数据库中装入一个报表
SaveToFile 保存到文件
SaveToStream 保存到流
SaveToBlobField 保存到Blob类型的字段中
(注:LoadFromStream 与 SaveToStream 中参数的类型是TACStream,它继承于TStream。)
ShowDesigner 设计报表
Print 打印
preview 预览
PrintPrepared 打印已经准备好的报表(如果你自己控制准备报表可以使用这个)
PrepareReport 准备报表
PrintWithSet 在打印前弹出打印设置的对话框
使用就这么简单,如果你的功力稍够的话,你完全可以将你的应用程序中的报表系统做得更好些,最笨的办法就是在每个Form上放一个TACReport,然后进行设置。
我的做法是在软件中用一个通用的TACReport,然后其它地方通一个函数把数据集和变量及报表名称传过来,动态设置ACReport的各属性后,从数据库中装入模板进行打印(我的模板存放在数据库中,以Form的类名和报表名称作为标识)。
**************************************************************************************
二.扩充功能。
本报表采用面向对象的方法编写,扩充功能主要是从一些基类重载一些子类,再通过调用某些特定的过程注册这些类即可以完成扩充功能。
以下是可能用到的几个重要的类:
TACReport :报表类,封装了报表的所有与界面无关的操作。
TACReportCell :单元格基类,最简单的单元格的类。
TACStyle : 报表样式的基类。
TACReportLine :报表行。
TACReportCtrl :显示报表的类。
TACPgHeadFoot :页眉页脚类。
TACFunctionManger :函数库管理类
TACFormatManager :单元格样式管理类
----------------------------------------------------------------
1.扩充函数
扩充函数很简单,在你的程序中包含ACFuncManager单元:
uses ACFuncManager;
然后:
(1).编写函数
在Delphi中写好你要增加的函数,要求是所有的参数和返回值类型都申明为Variant,如以下是增加一个取右子串的函数:
function StrRight(AStr, nLen:variant) :variant;
var ts :string;
tnLen :integer;
begin
ts := AStr;
tnLen := nLen;
Result := Copy(ts, Length(ts)-tnLen+1, tnLen);
end;
(2)注册函数
单元的initialization中调用ACFunctionManager.RegisterFunction进行注册:
initialization
with ACFunctionManager do
RegisterFunction('StrRight', @StrRight,'字符串, 长度', [dtString, dtInteger],
dtString, fcString, '从字符串右面取指定长度的子串。');
end;
参数说明:
1): 在报表中的函数名称
2): 函数地址
3): 参数说明
4): 参数类型
5): 返回值类型
6): 函数类别
7): 函数说明
(3)合计函数
以上例子是一个简单函数,如果要注册合计函数,需要重载TAggrFunc基类,TAggrFunc定义如下:
TAggrFunc = class(TObject)
private
public
procedure Init; virtual;
procedure AddAggrValue(P1 :variant); virtual;
function GetAggrValue :variant; virtual;
end;
以下是一个sum函数的例子:
TSumFunc = class(TAggrFunc)
private
FSum : real;
public
procedure Init; override;
procedure AddAggrValue(P1 :variant); override;
function GetAggrValue :variant; override;
end;
{TSumFunc}
procedure TSumFunc.Init;
begin
FSum := 0;
end;
procedure TSumFunc.AddAggrValue(P1 :variant);
begin
FSum := FSum + P1;
end;
function TSumFunc.GetAggrValue :variant;
begin
result := FSum;
end;
注册方法:
SumFunc := TSumFunc.Create();
RegisterFunction('sum', SumFunc, '表名, 表达式',[dtVariant], dtFloat,fcAggr, '合计表达式的值');
有关扩充函数的代码可参考公开源码的单元ACStdFuncLib.pas。
--------------------------------------------------------------------
2.扩充单元格样式。
如果你想扩充一种新的单元格样式,只须从TACreportCell派生一个子类,然后调用TACFormatManager.RegisterCellClass你新写的子类注册即可.
(1). 派生方法,例如以下代码是一个条码类型单元格:
TACBarC = class(TACReportCell)
private
FBarCode :TACBarCode;
FCodeType : TAcBarcodeType;
FViewText, FCheckSum :boolean;
procedure SetCodeType(AValue :TAcBarCodeType);
procedure SetBoolValue(AIndex:integer; AValue :boolean);
protected
procedure Draw(ACanvas :TCanvas); override; //可能需重载的方法
procedure LoadFromStream(AStream:TACStream); override; //可能需重载的方法
procedure SaveToStream(AStream:TACStream); override; //可能需重载的方法
public
constructor Create(); override;
destructor Destroy; override;
procedure CopyCell(Cell: TACReportCell; bCopyText, bInsert, bOnlyValue: Boolean); override;
property CodeType :TAcBarCodeType read FCodeType write SetCodeType;
property ViewText :boolean index 0 read FViewText write SetBoolValue;
property CheckSum :boolean index 1 read FCheckSum write SetBoolValue;
end;
有三个方法可能需重载:
1) procedure Draw(ACanvas :TCanvas);
绘制单元格的方法。
2) procedure LoadFromStream(AStream:TACStream);
procedure SaveToStream(AStream:TACStream);
从流中装入单元格属性的方法,如果子类有自己一些属性需要保存则需要重载这两个方法。
本例中三个方法实现如下:
procedure TACBarC.LoadFromStream(AStream:TACStream);
var i:integer;
begin
inherited;
FCodeType := TACBarCodeType(AStream.IntegerIO);
FViewText := AStream.BooleanIO;
FCheckSum := AStream.BooleanIO;
end;
procedure TACBarC.SaveToStream(AStream:TACStream);
begin
inherited;
AStream.IntegerIO := integer(FCodeType);
AStream.BooleanIO := FViewText;
AStream.BooleanIO := FCheckSum;
end;
procedure TACBarC.Draw(ACanvas :TCanvas);
var ACode :string;
ATxtHeight :integer;
hTextFont, hPrevFont: HFONT;
begin
FBarCode.Typ := FCodeType;
if CellText <> '' then
ACode := inherited Value
else if rsDesign in OwnerLine.Report.States then
begin
ACode := '01234356789';
inherited Value := ACode;
end;
if ACode = '' then
Exit;
FBarCode.Text := ACode;
FBarCode.Checksum := FCheckSum;
windows.SetTextColor(ACanvas.Handle, TextColor);
hTextFont := CreateFontIndirect(LogFont);
hPrevFont := SelectObject(ACanvas.Handle, hTextFont);
ATxtHeight := ACanvas.TextHeight('1Aa汉');
.....
end;
(2).注册
首先要在你的Unit中包含ACFormat单元:
Uses ACFormat
然后在调用ACFormatManager.RegisterCellClass方法进行注册就行,例如以下是报表程序实际的注册例子:
initialization
with ACFormatManager do
begin
RegisterCellClass(TACReportCell, '常规');
RegisterCellClass(TACNumeric, '数值');
RegisterCellClass(TACDateTime, '日期/时间');
RegisterCellClass(TACRichText, 'Rich文本');
RegisterCellClass(TACPicture, '图像');
RegisterCellClass(TACBarC, '条形码');
RegisterCellClass(TAcChart, '图表对象');
with Formats[TACNumeric] do
begin
Add('0.00|12.10/总是固定两位小数点,有利于对齐。');
Add(',0.00|-1,233.03/自动分节');
Add(',0.000|23.320');
Add('#.##|23.2');
Add(',#.##|23/自动分节,最多保留2位小数');
Add(',0.##|0.32/至少保留一个整数位');
end;
with Formats[TACDateTime] do
begin
Add('YYYY-MM-DD|2003-07-18/只显示日期部分(标准格式)。');
Add('YYYY-MM-DD HH:MM:SS|2003-07-18
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
V1.8主要增加或修改了如下功能:1.增加了子报表功能,可以在明细、表尾嵌入子报表,支持无限级嵌套。用此功能,可解决"一主多细"、"两级主细表"等复杂的报表。2.支持连续纸打印(即打即停)3.分组打印支持每组从新页开始。4.新增了一些标准函数。5.增加了acreport.ini配置文件,准备报表可以选择临时页面存放在内存或硬盘上。6.调整了控件使用上的一些特性,使用不会轻易出现错误。7.图像打印支持按际比例缩放。8.改善了编辑功能,如比例尺、设置行高、鼠标拖动滚动等。9.修改了其它一些特性和bug,如"空值显示为0"等问题。修复原来文件
资源推荐
资源详情
资源评论
收起资源包目录
Anycell Report中式报表V1.8 (809个子文件)
0.apt 75KB
2.apt 42KB
3.apt 40KB
14.apt 20KB
6.apt 20KB
11.apt 11KB
10.apt 11KB
5.apt 10KB
7.apt 10KB
1.apt 10KB
13.apt 9KB
15.apt 8KB
addfunc.apt 5KB
12.apt 4KB
9.apt 4KB
8.apt 4KB
4.apt 2KB
AC_ListEdit.cfg 442B
AC_ListEdit.cfg 442B
ACTools.cfg 390B
ACReport.cfg 390B
ACReport.cfg 390B
ACTools.cfg 390B
ACReport.cfg 390B
ACTools.cfg 390B
Project1.cfg 386B
anycellRpt.cfg 386B
addfunc.cfg 386B
ACRegisterDpk.cfg 386B
Project1.cfg 386B
ACRegisterDpk.cfg 386B
ACRegisterDpk.cfg 386B
goods.db 952KB
Zlemployee.db 272KB
GzTotal.db 240KB
CheckDetail.db 24KB
ZlDept.db 14KB
Photo.db 10KB
CheckMaster.db 6KB
Storage.db 4KB
RptDocs.db 4KB
XueLi.db 4KB
AC_ToolReg.dcr 4KB
AC_ToolReg.dcr 4KB
AC_ToolReg.dcr 4KB
AC_Reg.dcr 2KB
AC_Reg.dcr 2KB
AC_Reg.dcr 2KB
ACReportClass.dcu 126KB
ACReportClass.dcu 125KB
ACReportClass.dcu 116KB
ACDesignel.dcu 58KB
ACDesignel.dcu 57KB
ACDesignel.dcu 56KB
AC_wawWriters.dcu 53KB
AC_wawWriters.dcu 53KB
AC_wawWriters.dcu 49KB
AC_E_HTML2.dcu 45KB
AC_E_HTML2.dcu 45KB
AC_E_HTML2.dcu 43KB
ACCells.dcu 37KB
ACCells.dcu 37KB
ACCells.dcu 35KB
AC_ExportExcel.dcu 30KB
AC_ExportExcel.dcu 29KB
ACBarcod.dcu 29KB
ACBarcod.dcu 29KB
AC_ExportExcel.dcu 28KB
ACBarcod.dcu 27KB
AC_Format.dcu 26KB
AC_wawExcel.dcu 26KB
AC_Format.dcu 26KB
AC_wawExcel.dcu 25KB
AC_Format.dcu 25KB
AC_wawExcel.dcu 25KB
AC_Fonts.dcu 23KB
AC_Fonts.dcu 23KB
AC_Fonts.dcu 23KB
AC_ListEdit.dcu 22KB
AC_ListEdit.dcu 22KB
AC_ListEdit.dcu 22KB
AC_Colors.dcu 20KB
AC_Colors.dcu 20KB
AC_Colors.dcu 20KB
ACStdFuncLib.dcu 20KB
ACStdFuncLib.dcu 20KB
Unit1.dcu 18KB
ACStdFuncLib.dcu 18KB
AC_Rich.dcu 17KB
AC_wawFormula.dcu 17KB
AC_Rich.dcu 17KB
AC_wawFormula.dcu 17KB
AC_ExportRTF.dcu 16KB
AC_Rich.dcu 16KB
AC_Graphic.dcu 16KB
AC_Graphic.dcu 16KB
AC_ExportRTF.dcu 16KB
AC_wawFormula.dcu 16KB
AC_E_Xls.dcu 16KB
AC_wawBIFF8.dcu 15KB
共 809 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
- wxm22339232013-09-17很好用,谢谢
普通网友
- 粉丝: 882
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- BLOCK_TYPE_HEARTBEAT_D70A3465D4EE4E9_046141_dump_1st.dmp
- 项目方法测试调用接口工具
- studyupdate
- 基于西瓜数据集的决策树实现.zip
- 60套HTML网站源码-响应式-涵盖(简历&作品展示&商业&科技&培训&商城&课设等)-适配移动设备-解压即用.zip
- 贪心算法要点和难点实例代码解析
- 65套HTML网站源码-响应式-涵盖(简历&作品展示&商业&科技&培训&商城&课设等)-适配移动设备-解压即用.zip
- 多因素决策树的Python实现.zip
- 使用Python在莺尾花数据集上实现了决策树算法,文件里有数据集.zip
- python实现决策树.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功