Помогите начинающему с подключаемыми функциями
В отчете понадобилось добавить новую функцию . С документации скопировал пример
unit myfunctions;
interface
implementation
uses SysUtils, Classes, fs_iinterpreter;
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;
function MyFunc(s: String; i: Integer): Boolean;
begin
//
end;
procedure MyProc(s: String);
begin
//
end;
{ TFunctions }
constructor TFunctions.Create;
begin
inherited Create(AScript);
with AScript do
begin
AddMethod('function MyFunc(s: String; i: Integer): Boolean',
CallMethod, 'Мои функции', 'Тест1');
AddMethod('procedure MyProc(s: String)', CallMethod, 'Мои функции',
'Тест2');
end;
end;
function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0], Params[1])
else if MethodName = 'MYPROC' then
MyProc(Params[0]);
end;
initialization
fsRTTIModules.Add(TFunctions);
end.
Модуль компилится без ошибок . Подключаю модуль к программе . Однако в дизайнере рапорта новых функций нет .
Что еще надо и куда дописать ?
unit myfunctions;
interface
implementation
uses SysUtils, Classes, fs_iinterpreter;
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;
function MyFunc(s: String; i: Integer): Boolean;
begin
//
end;
procedure MyProc(s: String);
begin
//
end;
{ TFunctions }
constructor TFunctions.Create;
begin
inherited Create(AScript);
with AScript do
begin
AddMethod('function MyFunc(s: String; i: Integer): Boolean',
CallMethod, 'Мои функции', 'Тест1');
AddMethod('procedure MyProc(s: String)', CallMethod, 'Мои функции',
'Тест2');
end;
end;
function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0], Params[1])
else if MethodName = 'MYPROC' then
MyProc(Params[0]);
end;
initialization
fsRTTIModules.Add(TFunctions);
end.
Модуль компилится без ошибок . Подключаю модуль к программе . Однако в дизайнере рапорта новых функций нет .
Что еще надо и куда дописать ?
Комментарии