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

Обсуждение Stimulsoft Reports.NET
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

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

Сообщение Сергей »

Доброго времени суток.

Переходим с версии 2008.1 на 2008.2.
Используется класс - наследник StiDesigner. В нем происходит изменение словаря отчета и вызывается метод InvokeRefreshDictionary(). В 2008.2 этого метода (как и кнопки обновления словаря в дизайнере) нет. В итоге в дизайнере не отображаются изменения словаря.
Как решить эту проблему?
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

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

Сообщение Сергей »

Стал использовать

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

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

ps.InvokeSynchronize();
При этом у пользователя запрашивается подтверждение синхронизации (MessageBox). Можно от него как-то избавиться?
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

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

Сообщение Сергей »

Некорректно работает пристыковка панелей в стандартном режиме GUI дизайнера (см. картинку).

Изображение

Еще, возможно глупый, вопрос. Как из стандартного режима GUI переключиться обратно в Ribbon?
И как сделать это программно? В примере "DesignerManagement" этого не увидел.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

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

Сообщение Сергей »

При собственной обработке сохранения отчета в дизайнере

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

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

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

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

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

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

    ((sender as StiDesignerControl).Parent as StiDesigner).Close()
}
закрытия не происходит.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

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

Сообщение Vital »

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

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

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

this.DesignerControl.InvokeRefreshDictionary();
Спасибо.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

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

Сообщение Vital »

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

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

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

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

Stimulsoft.Report.StiSelectGuiHelper.IsRibbonGui = true;
Спасибо.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

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

Сообщение Vital »

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

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

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

Спасибо.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

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

Сообщение Сергей »

Vital писал(а): Используйте следующий код:

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

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

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

(this.DesignerControl as StiDesignerControl).InvokeRefreshDictionary();
Будет неприятно, если в StiDesigner.DesignerControl окажется не StiDesignerControl :) Почему StiDesigner.DesignerControl является интерфейсом (IStiDesignerBase)?
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

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

Сообщение Сергей »

Vital писал(а):Ошибка исправлена. Патч будет включен в билд от 1 декабря.
Здравствуйте. Когда будет доступен данный билд?
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

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

Сообщение Vital »

Здравствуйте,
Небольшое уточнение:

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

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

Спасибо.
Ответить