Можно ли программно создавать Tab'ы в Previewcontrol

отредактировано 04:47 Раздел: FastReport .NET
Можно ли программно создавать Tab'ы в PreviewControl, так же как в примере Interactive Report. Но я хочу безе гипперссылок, просто на одной закладке - чарт, на второй репорт, на третей другой репорт.

Павел.

Комментарии

  • отредактировано 04:47
    Нет, соответствующая функциональность сейчас скрыта.
  • отредактировано 04:47
    Завтра добавлю методы
    public void AddTab(Report report, string text)
    public bool SwitchToTab(string text)
    public void DeleteTab(string text)
    public bool TabExists(string text)
  • отредактировано 04:47
    AlexTZ написал: »
    Завтра добавлю методы
    public void AddTab(Report report, string text)
    public bool SwitchToTab(string text)
    public void DeleteTab(string text)
    public bool TabExists(string text)

    Вылетает NullRefernceException при выполнении следующего кода:
    ReportPreview.AddTab(new Report(), "Summary");
    

    ReportPreview конечно создан и отчет формируется стандартным образом, но как только я пытаюсь добавить вкладку, вылетает ексепшн
  • отредактировано 04:47
    report должен быть построен:

    Report report = new Report();
    report.Load(...);
    report.RegisterData(...);
    report.Prepare();
    ReportPreview.AddTab(report, "Summary");
  • отредактировано 04:47
    Так сработало! Спасибо!
  • отредактировано 04:47
    AlexTZ написал: »
    report должен быть построен:

    Report report = new Report();
    report.Load(...);
    report.RegisterData(...);
    report.Prepare();
    ReportPreview.AddTab(report, "Summary");

    Сделал все как описано здесь - валится с ошибкой:
    ************** Текст исключения **************
    System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
       в FastReport.Preview.PreviewControl.SEPCA46m5(Object , TabStripTabChangedEventArgs )
       в DevComponents.DotNetBar.TabControl.InvokeSelectedTabChanged(TabStripTabChangedEventArgs e)
       в DevComponents.DotNetBar.TabControl.tabStrip1_SelectedTabChanged(Object sender, TabStripTabChangedEventArgs e)
       в DevComponents.DotNetBar.TabStrip.SelectTab(TabItem value, eEventSource eventSource)
       в DevComponents.DotNetBar.TabStrip.set_SelectedTab(TabItem value)
       в DevComponents.DotNetBar.TabControl.set_SelectedTab(TabItem value)
       в FastReport.Preview.PreviewControl.jrSpkdLpW(PreparedPages , String )
       в FastReport.Preview.PreviewControl.AddTab(Report report, String text)
       в AdmClient.frmAdministratorMainForm.AddReportToTab(Report Report, String TabName) в H:\Документы\Объекты\МСЗ\ПО\AdmClient\AdmClient\Интерфейс администратора\frmAdministratorMainForm.vb:строка 267
       в AdmClient.frmAdministratorMainForm.cmdIntervalReport_Click(Object sender, EventArgs e) в H:\Документы\Объекты\МСЗ\ПО\AdmClient\AdmClient\Интерфейс администратора\frmAdministratorMainForm.vb:строка 61
       в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
       в System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
       в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
       в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
       в System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
       в System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
       в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
       в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       в System.Windows.Forms.Control.WndProc(Message& m)
       в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       в System.Windows.Forms.ToolStrip.WndProc(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    
  • отредактировано 04:47
    Заметил, эта ошибка появляется если контрол не содержит сформированного отчета. Если же контрол уже отображает отчет и добавляешь новую вкладку, то все проходит на ура.

    Есть еще неприятные особенности. Если контрол PreviewControl не содержит отчета то я думаю, что стоит заблокировать как минимум следующие элементы меню:
    - Печать
    - Сохранить

    Вот почему я так считаю: При попытке сохранить несуществующий отчет вылетает ошибка (пусть и перехватываемая обработчиком).
  • отредактировано 04:47
    Поправил, будет доступно в следующем билде (сегодня ночью).
  • отредактировано 04:47
    Интересно, а почему не все изменения отражаются в файле Changes.txt? Очень удобная, между прочим, вещь. Вместо того, чтобы задавать лишние вопросы на форуме и не отвлекать от работы я первым делом заглядываю в него и ищу фиксы по своим проблемам там. Вдруг проблемы, из используемой на данный момент мною версии, пофиксены в следующей. Это намного улучшает поддержку продукта.

    Также мы при разработке ведем лог изменений с указанием даты. Так проще отслеживать изменения.

    Также есть еще мелкие ошибки:
    - Если в контроле несколько вкладок, то статус строка показывает состояние по последнему сформированному отчету, а не по текущему выбранному (что логично, как мне кажется. Потому, что если последний отчет содержит 100 страниц а текущий выбранный - 1, то нелепо смотрится в статус строке страница "N из 100" а ты видишь только одну.)

    - При заполнении табами всей ширины контрола (при создании большого количества табов) справа появляются стрелочки для прокрутки табов. Так вот если уйти этими стрелочками доконца вправо и начать закрывать табы с правой сторону попорядку, то при закрытии первых нескольких табов стрелочки прокрутки исчезают и возможность прокрутить назад влево отсутствует, а количество табов все еще больше ширины контрола и они не пододвигаются.
  • отредактировано 04:47
    У нас есть полный лог изменений, но далеко не все попадают в changes.txt - только наиболее существенные.

    По ошибкам:
    1) могу исправить
    2) исправить не могу - это ошибка не в нашей библиотеке.

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

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