为什么我的函数不出现在FastReport函数选项卡中?

时间:2011-02-01 13:44:44

标签: delphi fastreport

我正在尝试在外部设备中实现某些功能,并在FastReport脚本中调用它们。我的单元已正确编译,但问题是功能选项卡中没有显示任何功能或过程。任何人都可以建议如何解决这个问题?我不确定我是否错过了什么。

以下是我的单位代码示例。 FastReport开发人员指南指出实现应该是这样的。

unit frxCustomFuncs;

interface
var myGlobalVar: primitiveType;
implementation

uses sysUtils, Classes, fs_iinterpreter,
myUnit;

type
  TFunctions = class(TfsRTTIModule)
  private
    function CallMethod(Instance: TObject;
      ClassType: TClass; const MethodName: String; var Params: Variant): Variant;
  public
    constructor Create(AScript: TfsScript); override;
end;



procedure myCustomProcedure(myParam1, myParam2: TdateTime);
var myVar: TMyCustomClass; //declared in myUnit
begin
   myVar:= TMyCustomClass.create(myParam1, myParam2);
   try

Some code ...
        myGlobalVar:= myVar.property;
some code ...
   finally
     myVar.Free;
   end;
end;

{ TFunctions }

function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
  const MethodName: String; var Params: Variant): Variant;
begin
  if MethodName = 'myCustomProcedure' then
  myCustomProcedure(Params[0], Params[1]);
end;

constructor TFunctions.Create(AScript: TfsScript);
begin
  inherited create(AScript);
  with AScript do
  begin
      AddMethod('procedure myCustomProcedure(myParam1, myParam2: TdateTime)',
      CallMethod, 'My Functions', 'custom description');
  end;
end;

initialization
  fsRTTIModules.Add(TFunctions);

end.

1 个答案:

答案 0 :(得分:2)

我的猜测:该单元存在于您自己的项目中,并且您正在IDE中使用报表设计器。 IDE中的Designer不知道也不应该知道您当前项目的内容。

将文件添加到设计时包中,IDE中的Designer应该接收这些函数。