Как вставить пользовательскую ф-цию?
Вопрос в следующем, как все-таки правильно подключать пользовательскую функцию?
При раскладе приведенном ниже, функция SSS не появляется в дереве функций отчета. При придварительном промотре - ошибка, но при выполнениии отчета все работает замечательно.
Заранее всем спасибо.
FR 3.20.25 & BDS2006
Function SSS(Number: Integer): string;
begin
Result:=IntToStr(Number+10);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
frxReport1.AddFunction('function SSS(Number: integer): string');
end;
function TForm1.frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
begin
if MethodName='SSS' then
Result:=SSS(Params[0]);
end;
При раскладе приведенном ниже, функция SSS не появляется в дереве функций отчета. При придварительном промотре - ошибка, но при выполнениии отчета все работает замечательно.
Заранее всем спасибо.
FR 3.20.25 & BDS2006
Function SSS(Number: Integer): string;
begin
Result:=IntToStr(Number+10);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
frxReport1.AddFunction('function SSS(Number: integer): string');
end;
function TForm1.frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
begin
if MethodName='SSS' then
Result:=SSS(Params[0]);
end;
Комментарии
...Этот способ несколько проще. Описания функций теперь добавляются с
помощью метода TfrxReport.AddFunction с единственным параметром. Вызов
функций реализуется в обработчике события TfrxReport.OnUserFunction.
Оба способа подключения равноценны. Подключенную функцию можно
использовать в скрипте отчета, а также обращаться к ней из объектов типа
TfrxMemoView. Функция также отображается в окне "Дерево данных". В этом окне функции разбиты по категориям, и при выборе каждой функции внизу окна отображается подсказка по выбранной функции.
Изменим код наших примеров, чтобы зарегистрировать функции в
отдельной категории и отобразить описание функции:....
Может надо как-то по другому????
помогите плиз, а то только пересел на FS и пока толком многого не понимаю...
Но все равно - у меня не получается. Видать руки - крюки.
На форме лежит Button1 и frxReport1. Больше нигда и ничего не прописано - все по умолчанию.
В run-time - все нормально отрабатывает!
В design-time - фигушки, ошибка.
Если можно - примерчик на PM или мыло. Заранее спасибо.
... к сожалению ничерта не получается, может кто объяснит доходчиво как это сделать в builder-ре
Вот небольшой пример, чтобы функции появились нужно:
1) Запустить BCB
2) В меню Component -> Install Componenet... -> перейти на вкладку InTo New Package
3) в Unit File Name выбрать DLLFunctions.cpp
4) в Packages file name c:\program files\borland\cbuilder6\Lib\myfunctions.bpk - где myfunctions.bpk - имя нового пакета.
5) Ok -> предложит собрать и установить пакет нужно согласится.
6) После установки пакета выйти из BCB.
7) Открыть BCB и загрузить Project1.bpr.
8) Двойной клик по frxReport, если все сделали правельно появятся новые функции.
Тоже что и для BCB В меню Component -> Install Componenet... -> перейти на вкладку InTo New Package, в unit name имя фашего pas файла с функциями, а в package file name путь и имя нового пакета (путь должен быть прописан в library path).
Спасибо огромное за подробный ответ, наконец-то начинает складываться, хоть какая-то картина, но есть небольшая незадача...
на последнем этапе компиляции выскакивает такая ошибка:
Cannot debug project unless a host application is defined. Use the Run|Parameters... dialog box.
??????????????
Огромное спасибо заработало!!!!!!!!!