Динамическое изменение отчета

LexLex
отредактировано 07:03 Раздел: FastReport 3.0
Посоветуйте как поступит в таком случае

Есть отчет на котором существует несколько бендов на которых есть обязятельные мемки.
Плюс есть некие обработчики событий.

Перед запуском отчета пользователь выбирает набор полей которые хочет увидить...

нужно добавить соответсвующие мемки, показать отчет, и удалиь эти мемки из
отчета

обычным Create - Free не получается

Комментарии

  • отредактировано 07:03
    Почитайте
    Руководство программиста - Создание формы отчета с помощью кода.
  • LexLex
    отредактировано June 2005
    Руководство я прочитал в первую очередь, и не раз создавал отчет в Run-Time с нуля.
    Но дело в том что мне нужно изменить существующий отчет. А именно добавить мемки дать пользователю поюзать отчет а затем удалить эти мемки из отчета и при следуюшем обращении добавить новые мемки.
    Если я делаю примерно так
      frxReportTitleBand:=TfrxReportTitle(frxReport.FindObject('ReportTitleBand'))
      tmpMemoView := TfrxMemoView.Create(Nil);
      tmpMemoView.Name  := 'myMemo1';
      tmpMemoView.Parent := frxReportTitleBand;
      tmpMemoView.Left     := ReportTitleLeft;
      tmpMemoView.Top     := 0;
      tmpMemoView.Width  := 0;
      tmpMemoView.Height := frxReportTitleBand.Height;
      tmpMemoView.Text    := '[frxDataSet."Field_1"]';
    
      frxReport.ShowReport;
     
      if tmpMemoView  <> Nil Then
        FreeAndNil(tmpMemoView );
    

    при второй попытке построить ( frxReport.ShowReport;) отчет вылетает ошибка "повторяющееся имя"
  • отредактировано 07:03
    Две ошибки.
    1) tmpMemoView := TfrxMemoView.Create(frxReportTitleBand), parent при этом указывать не надо
    2) после построения отчета объекты перечитываются из потока, поэтому строка
    FreeAndNil(tmpMemoView ) почистит уже очищенную область памяти и вызовет AV, скорее всего.
  • LexLex
    отредактировано 07:03
    А каким образом мне удалить объект из отчета?
  • отредактировано 07:03
    tmpMemoView:=TfrxMemoView(frxReport.FindObject('MyMemo1'));
    if tmpMemoView <> Nil Then
    FreeAndNil(tmpMemoView);
  • LexLex
    отредактировано 07:03
    Спасибо все получилось!!! ;)

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

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