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

отредактировано September 2007 Раздел: FastReport 4.0
Создаю динамически отчет, после просмотра в режиме Дизайнера все объекты удаляются как надо. Но после Пред-просмотра, некоторые объекты становятся не доступны (возможно удаляются, точно сказать не могу). Такое происходит во всех случаях при вызове PrepareReport или ShowReport (значение параметров не важно). А теперь вопрос, это так и должно работать!? Или может я чего-то не понимаю?...
Вот кусок кода:
var
  Report:TfrxReport;
  Page,Page2:TfrxReportPage;
  Image:TfrxPictureView;
  Comp:TfrxGradientView;
begin
 Report := TfrxReport.Create(Application);
 Report.CreateUniqueName;

 Page := TfrxReportPage.Create(Report);
 Page.CreateUniqueName;

 Page2 := TfrxReportPage.Create(Report);
 Page2.CreateUniqueName;

 comp := TfrxGradientView.Create(Page);
 comp.SetBounds(5,5,100,50);
 comp.CreateUniqueName;
 comp.BeginColor := $10a0e0;
 comp.EndColor := $80b0e0;

 Image := TfrxPictureView.Create(Page);
 Image.CreateUniqueName;
 Image.SetBounds(100,100,200,200);
 Image.Picture.LoadFromFile('C:\WINDOWS\winnt.bmp');

 Report.DesignPreviewPage();

// Report.PrepareReport();
// Report.ShowPreparedReport;

// Report.ShowReport(False);

 if Assigned(comp) then
    comp.Free();

 if Assigned(Image) then
    Image.Free;

 if Assigned(page2) then
    page2.Free;

 if Assigned(page) then
    Page.Free;

 if Assigned(Report) then
   Report.Free;

Комментарии

  • отредактировано 20:51
    Вчера проверил свои догадки и оказалось что дело в Превьюхе. После ее вызова начинает твориться сие безобразие. Долго с этим парился и решил посмотреть, что происходит с дочерними объектами в отчете и оказалось их адреса смещаются. После этого восстановил все объекты через указатели и все заработало. Отсюда следует, что господа разработчики, что то творят с объектами, после чего они (объекты) указываю не на ту область памяти.

    PS: Господа разработчики прошу как можно быстрее поправить данную ошибку, так как она приводит к утечке памяти и может привести к критической ошибке.
  • отредактировано September 2007
    NaZGuL_ITV написал: »
    var
      Report:TfrxReport;
      Page,Page2:TfrxReportPage;
      Image:TfrxPictureView;
      Comp:TfrxGradientView;
    begin
     Report := TfrxReport.Create(Application);
     Report.CreateUniqueName;
    
     Page := TfrxReportPage.Create(Report);
     Page.CreateUniqueName;
    
     Page2 := TfrxReportPage.Create(Report);
     Page2.CreateUniqueName;
    
     comp := TfrxGradientView.Create(Page);
     comp.SetBounds(5,5,100,50);
     comp.CreateUniqueName;
     comp.BeginColor := $10a0e0;
     comp.EndColor := $80b0e0;
    
     Image := TfrxPictureView.Create(Page);
     Image.CreateUniqueName;
     Image.SetBounds(100,100,200,200);
     Image.Picture.LoadFromFile('C:\WINDOWS\winnt.bmp');
    
    [b] Report.DesignPreviewPage();[/b]
    
    // Report.PrepareReport();
    // Report.ShowPreparedReport;
    
    // Report.ShowReport(False);
    
     if Assigned(comp) then
        comp.Free();
    
     if Assigned(Image) then
        Image.Free;
    
     if Assigned(page2) then
        page2.Free;
    
     if Assigned(page) then
        Page.Free;
    
     if Assigned(Report) then
       Report.Free;
    

    Report.DesignPreviewPage(); вызывает дизайнер страниц построенного отчета(используется стандартном превью для редактирования), в вашем случае нужно вызывать DesignReport.

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

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