Tmeasures вычисляемые показатели

отредактировано 01:47 Раздел: FastCube
День добрый. Используем в проекте FastCube 1.6. Вычисляемые показатели создаются, при проверке компиляции в форме создания/редактирования все без ошибок. В сетке показателя значения возвращаются если задать константы, но при попытке обращения к полям сетки выдает сообщение что класс TMeasures не найден. И соответственно в поле показателя ничего не выводиться. Как с этим бороться? Delphi 7, скомпилена с опцией INCLUDE_SCRIPT.

Комментарии

  • отредактировано 01:47
    Приветствую.

    Как компилировали пакеты? Вручную или с помощью recompile.exe?
    Можете привести текст скрипта?

    С уважением, Олег.
  • отредактировано 01:47
    Пакеты компилировал вручную. В проекте используется еще FastScript и FastReport. При загрузке куба, инициализации Slice, по коду данный класс объявляется в скриптере (смотрел через отладчик - код выполняется). Похоже на то что пространство скриптера разное. По поводу скрипта - result := Measures[0].EditValue пробывал и через наименование. Да, в проекте используется TeeChartPro.
  • отредактировано 01:47
    Извиняюсь за задержку в ответе, что-то по подписке ничего не упало на ящик.
  • отредактировано 01:47
    Приветствую.

    Правильное обращение к значению показателя - CurrentValue, а не EditValue :

    Measures[AMeasureName].CurrentValue
    или
    Measures.ItemByCaption[AMeasureCaption].CurrentValue

    И сделайте компиляцию с помощью recompile.exe.
    В качестве пути к библиотеке FastScript укажите путь к библиотеке FastReport.
    Укажите нужную версию TeeChart.

    Желательно, что-бы *.dpk и fc.inc были оригинальные неизмененные.

    С уважением, Олег
  • отредактировано 01:47
    TMeasures и остальные классы регистрируются в скриптах отдельно для формы редактирования и для операции расчета.
    Соответственно в модулях fcfsFormulaEditor и fcInterpreter.
    И дефайн для подключения FastScript назвается INCLUDE_FAST_SCRIPT.
  • отредактировано 01:47
    Да я видел код. В момент редактирования показателя все работает. Я имел ввиду регистрация класса в интерпретаторе. Т.е. при по шаговой отладке видно что класс регистрируется. Опцию просто перепутал.
  • отредактировано 01:47
    Эх, причину то я нашел. В проекте используется общий модуль fsGlobalUnit. В момент инициализации выполняется код AddRTTI и выставляет признак загрузки модулей. Далее подхватываются новые модули, но так как признак загрузки стоит выполянется выход из метода и регистрации не производится. Если выполнить предварительно ClearRTTI, то теряются предыдущие объявления.

    До сих пор не победил. :)
  • отредактировано 01:47
    Проблема разрешилось заменой кода с RTTIModules на TFunction.Create(fsGlobal...)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.