как узанть какой Tfrxreport вызвал Callmethod при подключении доп функций
День добрый
как узанть какой tfrxReport вызвал CallMethod при подключении доп функций
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 TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if MethodName = 'MYFUNC' then ??????????????????
end;
initialization
fsRTTIModules.Add(TFunctions);
end.
с Уважением Денис
как узанть какой tfrxReport вызвал CallMethod при подключении доп функций
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 TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if MethodName = 'MYFUNC' then ??????????????????
end;
initialization
fsRTTIModules.Add(TFunctions);
end.
с Уважением Денис
Комментарии
а зачем? тебе всего лишь надо вернуть результат:
Одновременно можно запускать несколько отчётов
работают с обьектами
хотелосьбы понимать кто вызвал функцию, чтобы отыскать обьект
if MethodName = 'MYFUNC' then
begin
Rep := TObject(Integer(Script.Find('Report').Value)) as TfrxReport;
if Rep <> nil then
ShowMessage(Rep.Name);
Только при использовании DLL оператор as может не сработать, т.к. один и тот же класс используемый в двух модулях (приложение/длл) не будет идентичным, если собираетесь передавать объекты(ссылки) которые используются в приложении в ДЛЛ , то лучше использовать пакеты делфи, они автоматически управляют RTTI информацией о и классы будут идентичны (т.е. операторы as,is будут работать корректно).
Или попробуйте так :
if MethodName = 'MYFUNC' then
begin
if TObject(Integer(Script.Find('Report').Value)).ClassName = 'TfrxReport' then
begin
Rep := TfrxReport(Integer(Script.Find('Report').Value));
ShowMessage(Rep.Name);
end;