畅享博客 > 安仕达信息化分享 > 给报表机器增加新的内容函数
2009-5-5 23:53:54

给报表机器增加新的内容函数

所谓的内容函数,指的是可以在报表设计环境中可视化使用的函数,例如报表机器本来就有的函数有(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; 

实际应用效果

公司定义内容如下

wps_clip_image1

看 被准确地解析出来了

 

wps_clip_image2


推荐到鲜果:
分享&收藏

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)