Почему мои функции не отображаются на вкладке функций FastReport? - PullRequest
1 голос
/ 01 февраля 2011

Я пытаюсь реализовать некоторые функции во внешнем устройстве и вызывать их внутри скрипта 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 Ответ

2 голосов
/ 01 февраля 2011

Мое предположение: этот модуль находится в вашем собственном проекте, и вы используете дизайнер отчетов в IDE. Дизайнер в среде IDE ничего не знает и не должен знать о вашем текущем проекте.

Добавьте файл в пакет времени разработки, и дизайнер в IDE должен воспользоваться этими функциями.

...