Переход с Fastcube 1 на Fastcube 2.

отредактировано 14:16 Раздел: FastCube 2
уважаемые разработчики.

очень ценю Ваш труд - новый fastCube (судя по демкам) получился очень интересным продуктом. Но попробовать его в реальных проектах для меня пока невозможно - переход сложен и неоднозначен. Многих компонентов и модулей уже нет, многие переименованы.

Не могли бы вы создать примерное руководство по переходу на новую версию: какие модули удалить, какие компоненты переименовать и т.д. В идеале - лучше конвертор форм, но не уверен, что это реально. Поэтому опишите пока ручной процесс обновления проекта на новые компоненты.

Вот мои вопросы (частично - с уже найденными ответами):

модули изменившие названия:
fcTypes => fcxTypes
fcCube => fcxCube
frcComponents => fcxComponent
fcSlice => fcxSlice
fcPainters => fcxPainters
fcCustomGrid => fcxCustomGrid
fcTypes => fcxTypes

что с этими модулями, их можно удалять из проекта?
fcToolBar
frcCross
frcGridReport

Компоненты изменившие названия:
TfcGrid => TfcxSliceGrid
TfcSlice => TfcxSlice
TfcCube => TfcxCube
TfcChart => TfcxChart

Изменилось использование FieldsOfRegion
Slice.FieldsOfRegion(rf_CapXAx) => Slice.FieldsOfRegion[rf_CapXAx]

А дальше вопросы не имеющие пока решения:

Вопрос: Чему соответвует TfrcGrid?

Вопрос: что стало с TfcGetFieldConverter?

Отсутсвуют свойства Slice.MeasureIndexInY, Slice.MeasureIndexInХ
Что вместо?

Комментарии

  • отредактировано September 2013
    Добрый день.

    Видимо необходимость создания такого руководства действительно есть, так как вы не первый задаете вопросы о переходе.
    mihnik написал: »
    что с этими модулями, их можно удалять из проекта?
    fcToolBar
    frcCross
    frcGridReport

    fcToolBar = fcxSliceGridToolbar.pas
    frcCross = fcxpCross.pas
    fcGridReport - пока отсутствует, но если нужен, то вернем.
    mihnik написал: »
    Вопрос: Чему соответвует TfrcGrid?

    TfcxpSliceGridProvider
    mihnik написал: »
    Отсутсвуют свойства Slice.MeasureIndexInY, Slice.MeasureIndexInХ

    Теперь появился класс TfcxMeasuresContainer со свойством Container - можете посмотреть лежит ли он в Page, XAxis, YAxis
    case Slice.MeasuresContainer.Container.Region of
      rf_CapXAx: ...;
      rf_CapYAx: ...;
      rf_Page: ...;
    end;
    

    С Уважением,
    Павел Ишенин
  • отредактировано September 2013
    написал: »
    Добрый день.

    Видимо необходимость создания такого руководства действительно есть, так как вы не первый задаете вопросы о переходе.
    fcToolBar = fcxSliceGridToolbar.pas
    frcCross = fcxpCross.pas
    fcGridReport - пока отсутствует, но если нужен, то вернем.
    TfcxpSliceGridProvider
    Теперь появился класс TfcxMeasuresContainer со свойством Container - можете посмотреть лежит ли он в Page, XAxis, YAxis
    case Slice.MeasuresContainer.Container.Region of
      rf_CapXAx: ...;
      rf_CapYAx: ...;
      rf_Page: ...;
    end;
    

    С Уважением,
    Павел Ишенин

    Спасибо за оперативный ответ.
    дополнение.
    frcComponents соответствует fcxpComponents, а не fcxComponent.

    вопрос остался:
    Slice.MeasureIndexInY, Slice.MeasureIndexInХ - возвращали индекс в списке измерений по осям. Не очень понял, как получить эти значения через Slice.MeasuresContainer.


    Вопросы еще: Slice.GetFactFields - как теперь получить?
    Slice.XAxisLevelCount
    Slice.XAxisAllCountInLevel
    Slice.XAxisValueTypeAbs
    Slice.CapFactsFieldsAbs - тоже непонятно.

    Собственно, вопрос вот в чем - последняя группа свойств нужна для самописного "мастера" для выбора и построения диаграммы для произвольного набора данных в кубе. Мастер этот писался много лет назад, когда fastCube первой версии только появился. Тогда этим у нас занимался человек, который давно ушел... Многое из того, что он сделал, благополучно работало до сих пор. Но разбираться сейчас в его коде довольно затруднительно, учитывая масштабы изменений в FastCube 2.

    Может быть сейчас есть какой -то другой, более простой и доступный способ простого создания произвольных диаграмм из пользовательского приложения???
  • отредактировано 14:16
    Далее:
    мы не использовали штатный toolbar для FastCube, а делали свой на основе сторонних компонент. Это позволяло иметь иконки в едином стиле программы и применять темы оформления.
    Как использовать экспорт данных теперь? Ранее был метод DoExport, теперь его нет.
  • отредактировано 14:16
    Приветствую.
    mihnik написал: »
    Slice.MeasureIndexInY, Slice.MeasureIndexInХ - возвращали индекс в списке измерений по осям. Не очень понял, как получить эти значения через Slice.MeasuresContainer.
    Вопросы еще: Slice.GetFactFields - как теперь получить?
    Slice.XAxisLevelCount
    Slice.XAxisAllCountInLevel
    Slice.XAxisValueTypeAbs
    Slice.CapFactsFieldsAbs - тоже непонятно.
    к свойствам нужной оси обращаемся через контейнер данной оси:
    Slice.XAxisContainer или Slice.YAxisContainer
    к свойствам показателей через контейнер показателей:
    MeasuresContainer


    В FC 2 поле показатели стало "виртуальным", т.е. его нет в списке полей оси.
    Можно узнать уровень, где он расположен:
    Slice.MeasureIndexInX => Slice.XAxisContainer.MeasuresLevel
    Slice.MeasureIndexInY => Slice.YAxisContainer.MeasuresLevel
    Slice.XAxisLevelCount =>
    Тут несколько свойств (значение всех этих свойств может отличаться):
    Slice.XAxisContainer.LevelCount - число уровней в оси с учетом подгрупп (при наличии группировки в измерении), но без учета наличия поля "показатели"
    Slice.XAxisContainer.RealLevelCount - число уровней в оси с учетом подгрупп (при наличии группировки в измерении), но с учетом наличия поля "показатели"
    Slice.XAxisContainer.VisibleLevelCount - число видимых (не свернутых) уровней. учитывает наличия поля "показатели"
    Slice.XAxisContainer.Fields.Count - полей, помещенных в ось.
    Slice.CapFactsFieldsAbs => Slice.MeasuresContainer.MeasureFields.Caption

    Slice.XAxisAllCountInLevel
    Slice.XAxisValueTypeAbs
    Данные свойства аналогов не имеют. Теперь для получения полной информации о ячейках оси необходимо вызывать TraverseAxis.

    mihnik написал: »
    Но разбираться сейчас в его коде довольно затруднительно, учитывая масштабы изменений в FastCube 2.
    Да, изменения произошли кардинальные.
    mihnik написал: »
    Может быть сейчас есть какой -то другой, более простой и доступный способ простого создания произвольных диаграмм из пользовательского приложения???
    Диаграмма строится на основе среза, срез настраивается с помощью грида.
    Дополнительные свойства диаграммы настраиваются в редакторе диаграммы.
    Ничего иного у нас не создавалось.

    С уважением,
    Олег Прялков.
  • отредактировано 14:16
    mihnik написал: »
    Далее:
    мы не использовали штатный toolbar для FastCube, а делали свой на основе сторонних компонент. Это позволяло иметь иконки в едином стиле программы и применять темы оформления.
    Как использовать экспорт данных теперь? Ранее был метод DoExport, теперь его нет.
    TfcxSliceGrid
    function Export(AFilter: TfcxCustomExportFilter): Boolean;

    Если у Вас версия про, то в исходниках всё наглядно видно.
  • отредактировано 14:16
    mihnik написал: »
    Собственно, вопрос вот в чем - последняя группа свойств нужна для самописного "мастера" для выбора и построения диаграммы для произвольного набора данных в кубе. Мастер этот писался много лет назад, когда fastCube первой версии только появился. Тогда этим у нас занимался человек, который давно ушел... Многое из того, что он сделал, благополучно работало до сих пор. Но разбираться сейчас в его коде довольно затруднительно, учитывая масштабы изменений в FastCube 2.

    Есть вариант - вы нас скидываете этот мастер диаграмм с примером работы для первого куба и если это оказывается полезным для включения в пакет FastCube 2, то мы адаптируем код и просто добавим его в пакет.

    С Уважением,
    Павел Ишенин
  • отредактировано 14:16
    написал: »
    TfcxSliceGrid
    function Export(AFilter: TfcxCustomExportFilter): Boolean;

    Если у Вас версия про, то в исходниках всё наглядно видно.
    Да, спасибо, нашел. Не сразу догадался, что процедуре Export (вот, IMHO, имя этой процедуры неудачное: из стандартных, даже выделяется жирным - потенциальный источник проблем) нужно передавать как параметр имя компонента экспорта.
  • отредактировано 14:16
    еще несколько вопросов:
    Насколько я понимаю, стримы созданные SliceOLAP.SaveToStream для старой и новой версии будут несовместимы между собой???

    насколько совместимы между собой файлы схем отчетов, созданные/ загружаемые процедурами
    SliceOLAP.SaveToFile;
    SliceOLAP.LoadFromXML


    что с этими процедурами:
    OLAPGrid.FieldEditor.Show;
    SliceOLAP.ManageFacts
    SliceOLAP.RangeConfig


  • отредактировано 14:16
    Стримы созданные в FastCube 1 будут читаться в FastCube 2, но не наоборот. Другими словами второй куб понимает то, что сохранено в первом кубе, но не наоборот.

    OLAPGrid.FieldEditor.Show => SliceGrid.ShowFieldsEditor
    SliceOLAP.ManageFacts => больше такого нет. Можно редактировать один показатель, но редактора всех показателей больше нет. Есть другие способы редактирования показателей, например через выпадающий список.
    SliceOLAP.RangeConfig => только для отдельного показателя:
        with TfcxMeasureEditorForm.Create(Owner) do
          Execute(SliceOlap, Measure, fcxMeasureEditorStylePageIndex);
    


    С Уважением,
    Павел Ишенин
  • отредактировано 14:16
    А как быть с методом AddFieldTo(FieldName, Caption, rf_CapYAx) в FastCube 2?

    AddFieldTo - добавить измерение на основе поля AFieldName в область ARegionOfField, установив для него название ACaption.

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

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