обработка Onuserfunction в С++builder6
Вот мой обработчик:
Variant __fastcall Tfp_et2::frxReport1UserFunction(
const AnsiString MethodName, Variant &Params)
{
Variant vr_ = "12345";
if ( MethodName == "GETPAR" )
{
vr_ = "54321";
}
return vr_;
}
//
В тексте выззываю: ".... [GETPAR(1,2)].."
1. Почему выдает ошибку??
2. Как обратится к первому и второму параметру??
Variant __fastcall Tfp_et2::frxReport1UserFunction(
const AnsiString MethodName, Variant &Params)
{
Variant vr_ = "12345";
if ( MethodName == "GETPAR" )
{
vr_ = "54321";
}
return vr_;
}
//
В тексте выззываю: ".... [GETPAR(1,2)].."
1. Почему выдает ошибку??
2. Как обратится к первому и второму параметру??
Комментарии
2. В руководстве разработчика есть пример (для Delphi)
Для "божественного" (http://bash.im/quote/420225) будет примерно так
{
int i = 0;
Variant vr_ = "12345";
if ( MethodName == "GETPAR" )
{
if (VarArrayGet(Params, &i, 0) == 1) {
vr_ = "par = 1";
}
else
{vr_ = "par <> 1";}
}
return vr_;
}
Единственно, не пойму смысла в AddFunction для общего случая, например с 3-мя параметрами.
И еще вопрос, а нельзя ли объявление функции делать в дизайнере??
Т.е. в приложении не вызывать addfunction??
Это было бы удобнее...
А зачем?? Ведь мне в OnUserFunction нужно только имя и параметры....как это было в версии 2.x )
Ну да ладно уж, но в таком случае удобнее было-бы ее регистрировать в дизайнере, чтобы не заморачиваться
в приложении, потому как скрипт не имеет возможностей приложения.
Фукция, которая обрабатывается OnUserFunction фантомная,- имеет только имя и параметры и только в среде FR.
Так зачем ее регистрировать из приложения??
т.е. мне надо думать про ее описание для FR в приложении.
(типа ... frxReport1->AddFunction( "function GETPAR( c1_: String; c2_: String ): String" );... )
Вместо того, чтобы добавить такую-же строку в список юзерских функций во время конструирования отчета в дизайнере....
да и большой плюс, что этот список будет хранится в файле отчета...
Ну а если она будет описана и задействована в FR, а обработчика в приложении вдруг не будет, то и ладно.
Можно вторым приоритетом вызывать такую-же из скрипта.
-> Я представляю, сколько нытья будет после выхода пятёрки. Многим будет нужно "как было в FR 4"
Поддержка старых версий - базовый принцип строительства ПО.
Да и винда не была б в таком фаворе, если б вдруг отказалась от CMD:))
Вот еще не разобрался с подключением датасетов.
Старый FR автоматом показывал все доступные датасеты в приложении.
теперь показываются тока собственные frxDBDataset...
Что совсем не гуд.
Те для каждого датасета должен ли я сбрасывать на форму frxDBDataset ????
Разве реализовать поддержку например старого варианта OnUserFunction
или показать все доступные датасеты требует немерянной работы???