2011-02-01 14 views
1

外部ユニットにいくつかの関数を実装し、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のデザイナーがこれらの機能を使用するようになります。

+1

@Raulまたはプロジェクトを実行して(uses句の単位で)、レポートデザイナを実行時に呼び出すと、マニュアルに説明されているように関数が表示されます。 – jachguate

関連する問題