Программно унаследованный отчет

отредактировано 23:54 Раздел: FastReport .NET
День добрый.
Тут возникла потребность программно создавать новые отчеты, унаследованные от шаблонного.
Пока удалось это реализовать только так:
//В папке приложения находится файл шаблонного отчета template.frx
//Создаем новый отчет
 Report report = new Report();
//наследуемся
report.BaseReport = Application.StartupPath + Path.DirectorySeparatorChar + "template.frx";
//запускаем дизайнер
 report.Design();
Есть ли способ получить унаследованный отчет, не используя полный путь до файла отчета-родителя (Application.StartupPath + Path.DirectorySeparatorChar + "template.frx")?
Напрмер передать новому отчету, который должен быть унаследован, ранее загруженный объект Report template = Report.FromFile(...).

Комментарии

  • отредактировано 23:54
    Здравствуйте,

    Полный путь нужен, чтобы FastReport смог сделать из него путь относительный. Когда отчет будет сохраняться, полный путь будет преобразован в относительный и в таком виде сохранен в файле отчета.
    Можно также подписаться на событие report.LoadBaseReport. Обработчик события должен загрузить базовый отчет по его имени:
          FReport = new Report();
          FReport.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport);
          FReport.BaseReport = "base.frx";
    
        private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e)
        {
          // e.FileName contains the name of base report
          e.Report.Load(@"d:\fr.net\demos\reports\" + e.FileName);
        }
    
  • отредактировано 23:54
    А что мешает сделать метод report.SetBaseReport(template); ведь template.FileName содержит этот самый полный путь?
  • отредактировано 23:54
    Не содержит, если отчет был загружен из потока.
  • отредактировано April 2009
    Понятно, спасибо.
    Тогда как наследоваться если отчеты грузятся из потока?
  • отредактировано 23:54
    FReport = new Report();
    FReport.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport);
    FReport.Load("main_report");

    Обработчик такой же, как в примере выше. Основной отчет грузите откуда угодно, а для загрузки базового отчета пишете обработчик.

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

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