スクリプトに関数を追加するには、関数の処理を行うTfsCallMethodEvent型のメソッドを作成して、TfsScriptのAddMethodメソッドで関数とTfsCallMethodEvent型のメソッドを登録します。
関数ごとにメソッドを登録することもできますし、一つのメソッドで複数の関数の処理を行うこともできます。
つまり、スクリプトに関数を追加するには、
- 関数ごとにメソッドを用意する方法
- 共通のメソッドで処理する方法
の2つの方法があります。
(1)関数ごとにメソッドを用意する方法
全体の手順は次のようになります。
- TfsCallMethodEvent型のメソッドを作成します。
- TfsScriptのAddMethodメソッドで、関数を登録します。
TfsCallMethodEvent型のメソッドを作成する
Plusメソッドを作成します。
このメソッドは2つの整数を引数にとり、足し合わせた結果を返します。
type
TForm1 = class(TForm)
private
function Plus(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
function TForm1.Plus(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
Result := Params[0] + Params[1];
end;
TfsScriptのAddMethodメソッドで、関数を登録する
AddMethodメソッドの最初の引数に関数の文法を、2番目の引数にTfsCallMethodEvent型のメソッドを設定します。
fsScript1.AddMethod(
'function Plus(I: Integer; J: Integer): Integer',
Plus);
(2)共通のメソッドで処理する方法
TfsCallMethodEvent型のメソッドを作成する
CallMethodメソッドを作成します。
このメソッドは、関数名が「Plus」の時は引数を足した結果を返し、関数名が「Minus」のときは引数を引いた結果を返します。
type
TForm1 = class(TForm)
private
function CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
function TForm1.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if SameText(MethodName, 'Plus') then
Result := Params[0] + Params[1]
else if SameText(MethodName, 'Minus') then
Result := Params[0] - Params[1];
end;
TfsScriptのAddMethodメソッドで、関数を登録する
fsScript1.AddMethod(
'function Plus(I: Integer; J: Integer): Integer',
CallMethod);
fsScript1.AddMethod(
'function Minus(I: Integer; J: Integer): Integer',
CallMethod);