Страница 1 из 3

Кастомизация дизайнера отчетов

Добавлено: 27 ноя 2008, 04:05
Сергей
Доброго времени суток.

Переходим с версии 2008.1 на 2008.2.
Используется класс - наследник StiDesigner. В нем происходит изменение словаря отчета и вызывается метод InvokeRefreshDictionary(). В 2008.2 этого метода (как и кнопки обновления словаря в дизайнере) нет. В итоге в дизайнере не отображаются изменения словаря.
Как решить эту проблему?

Кастомизация дизайнера отчетов

Добавлено: 27 ноя 2008, 08:10
Сергей
Стал использовать

Код: Выделить всё

Stimulsoft.Report.Design.Panels.StiDictionaryPanelService ps = 
Stimulsoft.Report.Design.Panels.StiDictionaryPanelService.GetService(this.DesignerControl as StiDesignerControl);

ps.InvokeSynchronize();
При этом у пользователя запрашивается подтверждение синхронизации (MessageBox). Можно от него как-то избавиться?

Кастомизация дизайнера отчетов

Добавлено: 27 ноя 2008, 08:45
Сергей
Некорректно работает пристыковка панелей в стандартном режиме GUI дизайнера (см. картинку).

Изображение

Еще, возможно глупый, вопрос. Как из стандартного режима GUI переключиться обратно в Ribbon?
И как сделать это программно? В примере "DesignerManagement" этого не увидел.

Кастомизация дизайнера отчетов

Добавлено: 27 ноя 2008, 09:35
Сергей
При собственной обработке сохранения отчета в дизайнере

Код: Выделить всё

StiDesigner.SavingReport += new StiSavingObjectEventHandler(StiDesigner_SavingReport);
не закрывается окно дизайнера при сценарии:
- пользователь меняет отчет
- нажимает кнопку закрытия дизайнера
- спрашивается у пользователя, сохранять ли изменения
- пользователь выбирает "да" (сохранить изменения перед закрытием).

В 2008.1 дизайнер закрывается.

Даже если вызвать метод Close()

Код: Выделить всё

static void StiDesigner_SavingReport(object sender, StiSavingObjectEventArgs e)
{
    ...

    ((sender as StiDesignerControl).Parent as StiDesigner).Close()
}
закрытия не происходит.

Кастомизация дизайнера отчетов

Добавлено: 28 ноя 2008, 04:29
Vital
Здравствуйте,
unic писал(а):Доброго времени суток.

Переходим с версии 2008.1 на 2008.2.
Используется класс - наследник StiDesigner. В нем происходит изменение словаря отчета и вызывается метод InvokeRefreshDictionary(). В 2008.2 этого метода (как и кнопки обновления словаря в дизайнере) нет. В итоге в дизайнере не отображаются изменения словаря.
Как решить эту проблему?
Используйте следующий код:

Код: Выделить всё

this.DesignerControl.InvokeRefreshDictionary();
Спасибо.

Кастомизация дизайнера отчетов

Добавлено: 28 ноя 2008, 04:33
Vital
Здравствуйте,
unic писал(а):Некорректно работает пристыковка панелей в стандартном режиме GUI дизайнера (см. картинку).

Изображение
Спасибо, постараемся поправить.

Еще, возможно глупый, вопрос. Как из стандартного режима GUI переключиться обратно в Ribbon?
Удерживайте клавишу Ctrl при загрузке или воспользуйтесь меню Options.
И как сделать это программно? В примере "DesignerManagement" этого не увидел.
Используйте следующий код:

Код: Выделить всё

Stimulsoft.Report.StiSelectGuiHelper.IsRibbonGui = true;
Спасибо.

Кастомизация дизайнера отчетов

Добавлено: 28 ноя 2008, 04:50
Vital
Здравствуйте,
unic писал(а):При собственной обработке сохранения отчета в дизайнере

Код: Выделить всё

StiDesigner.SavingReport += new StiSavingObjectEventHandler(StiDesigner_SavingReport);
не закрывается окно дизайнера при сценарии:
- пользователь меняет отчет
- нажимает кнопку закрытия дизайнера
- спрашивается у пользователя, сохранять ли изменения
- пользователь выбирает "да" (сохранить изменения перед закрытием).
Ошибка исправлена. Патч будет включен в билд от 1 декабря.

Спасибо.

Кастомизация дизайнера отчетов

Добавлено: 28 ноя 2008, 05:01
Сергей
Vital писал(а): Используйте следующий код:

Код: Выделить всё

this.DesignerControl.InvokeRefreshDictionary();
Спасибо.
Небольшое уточнение:

Код: Выделить всё

(this.DesignerControl as StiDesignerControl).InvokeRefreshDictionary();
Будет неприятно, если в StiDesigner.DesignerControl окажется не StiDesignerControl :) Почему StiDesigner.DesignerControl является интерфейсом (IStiDesignerBase)?

Кастомизация дизайнера отчетов

Добавлено: 02 дек 2008, 02:15
Сергей
Vital писал(а):Ошибка исправлена. Патч будет включен в билд от 1 декабря.
Здравствуйте. Когда будет доступен данный билд?

Кастомизация дизайнера отчетов

Добавлено: 02 дек 2008, 03:19
Vital
Здравствуйте,
Небольшое уточнение:

Код: Выделить всё

(this.DesignerControl as StiDesignerControl).InvokeRefreshDictionary();
Да, все верно. Извините за неточность.
Будет неприятно, если в StiDesigner.DesignerControl окажется не StiDesignerControl
Там может оказаться только StiDesignerControl или его наследники, вроде StiRibbonDesignerControl.
Почему StiDesigner.DesignerControl является интерфейсом (IStiDesignerBase)?
Так сложилось исторически, что первочанально дизайнер отчетов был формой (только формой). Позже добавили его как контрол, который фактически был унаследован от формы. Такое решение имело целый букет недостатков. В версии 2008.2 все было переделано с нуля. Появилась отдельная форма дизайнера и отдельный контрол дизайнера (как контрол). Кроме этого дизайнер отчетов был вынесен в отдельную сборку. Для реализации этих действий понадобилось добавить какое количество новых интерфейсов.

Спасибо.