给报表机器增加新的内容函数
所谓的内容函数,指的是可以在报表设计环境中可视化使用的函数,例如报表机器本来就有的函数有(Date.返回当前的系统日期;Time.返回当前的系统时间;Line#.返回当前的行号 ... ...) ,而我们可以利用报表机器提供的扩展机制,自己给该控件增加自己的处理函数,下面是一个例子:
功能需求
我们数据库中大量保存的是人员ID字段,而报表中打印需要的是人员编号人员名称这样的内容,因此我开发一个函数类,并注册他到报表机器中,使得他可以降低我们开发报表的难度,我们需要的函数是这样的,传递人员ID就去,反馈人员名称回来。
开发例子
(1) 定义新函数类型
USES Rm_Function ;
TRMFun_UserName= class(TRMFunction)
public
procedure DoFunction(p1, p2, p3: Variant; var val: Variant;Const FunctionName : String =''); override;
end;
(2) 注册新函数
RMFunctionLib.Add(TRMFun_UserName,'UserName','返回人员名称,参数是人员ID,使用例子是“User([人员ID])”','(<value>)',RMftOther);
说明一下 这个函数RegisterRMFunction的参数含义把:函数类、函数名称、函数解释、函数参数说明、函数类型。
(3) 函数的具体实现
procedure TRMFun_UserName.DoFunction(p1, p2, p3: Variant; var val: Variant;
const FunctionName: String);
begin
inherited;
if AnsiSameText(FunctionName,'UserName') then
val := Plat.SelectorgRight.GetUserName(Integer(RMParser.Calc(p1))) ;
end;
实际应用效果
公司定义内容如下
看 被准确地解析出来了
推荐到鲜果:



评论