Пользовательские фукнции при вызове отчета из отче
Привет всем! Подскажите есть ли корректный выход из ситуации?
При создании главной формы приложения добавляю пользовательскую функцию
procedure TFormMain.FormCreate(Sender: TObject);
begin
frxReport.AddFunction('function DoPadeg(FIO:string;Padeg:shortint): string;');
end;
потом делаю
function TFormMain.frxReportUserFunction(const MethodName: String;
var Params: Variant): Variant;
begin
if MethodName = 'DOPADEG' then Result :=DoPadeg(Params[0],Params[1]);
end;
Сама функция DoPadeg описана в модуле со всеми функциями используемыми в проекте.
При создании отчета в скрипте есть код
procedure Memo18OnBeforePrint(Sender: TfrxComponent);
begin
Memo18.Text:=DoPadeg(<ADOQuery_EMP."FIO">,2);
end;
Таким образом я получаю склоненое ФИО сотрудника..Ниже идет список приказов на этого сотрудника, при щелчке по номеру приказа вызывается другой отчет:
procedure Memo12OnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
var
Full_Info:TfrxReport;
begin
Full_Info:=TfrxReport.Create(nil);
Full_Info.LoadFromFile('C:\order.fr3');
Full_Info.ShowReport;
Full_Info.Free;
end;
Вот теперь вопрос - в отчете C:\order.fr3 есть много сотрудников и ФИО всех надо склонить, поскольку я создаю класс TfrxReport не из приложеия, а из отчета, то естественно что новый отчет не знает о функции
function DoPadeg(FIO:string;Padeg:shortint): string;
И я на момент создания второго отчета не знаю какие сотрудники там отобразатся..Как мне сказать второму отчету о существовании пользовательской функции DoPadeg?
При создании главной формы приложения добавляю пользовательскую функцию
procedure TFormMain.FormCreate(Sender: TObject);
begin
frxReport.AddFunction('function DoPadeg(FIO:string;Padeg:shortint): string;');
end;
потом делаю
function TFormMain.frxReportUserFunction(const MethodName: String;
var Params: Variant): Variant;
begin
if MethodName = 'DOPADEG' then Result :=DoPadeg(Params[0],Params[1]);
end;
Сама функция DoPadeg описана в модуле со всеми функциями используемыми в проекте.
При создании отчета в скрипте есть код
procedure Memo18OnBeforePrint(Sender: TfrxComponent);
begin
Memo18.Text:=DoPadeg(<ADOQuery_EMP."FIO">,2);
end;
Таким образом я получаю склоненое ФИО сотрудника..Ниже идет список приказов на этого сотрудника, при щелчке по номеру приказа вызывается другой отчет:
procedure Memo12OnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
var
Full_Info:TfrxReport;
begin
Full_Info:=TfrxReport.Create(nil);
Full_Info.LoadFromFile('C:\order.fr3');
Full_Info.ShowReport;
Full_Info.Free;
end;
Вот теперь вопрос - в отчете C:\order.fr3 есть много сотрудников и ФИО всех надо склонить, поскольку я создаю класс TfrxReport не из приложеия, а из отчета, то естественно что новый отчет не знает о функции
function DoPadeg(FIO:string;Padeg:shortint): string;
И я на момент создания второго отчета не знаю какие сотрудники там отобразатся..Как мне сказать второму отчету о существовании пользовательской функции DoPadeg?
Комментарии