2011-02-01 3 views
1

외부 장치에서 일부 기능을 구현하고 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. 

답변

2

내 생각 엔 : 해당 프로젝트는 사용자 자신의 프로젝트에 있으며 IDE의 보고서 디자이너를 사용하고 있습니다. IDE의 디자이너는 현재 프로젝트에 대해 알지 못하며 알지 못합니다.

파일을 디자인 타임 패키지에 추가하면 IDE의 Designer에서 해당 기능을 선택해야합니다.

+1

@Raul 또는 프로젝트를 uses 절에 사용하여 런타임에 보고서 디자이너를 호출하면 설명서에 설명 된대로 함수가 표시됩니다. – jachguate

관련 문제