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

mvbmvb Казань
отредактировано 18:18 Раздел: FastReport 4.0
По умолчанию страница poLandscape, при использовании объекта DBCross иногда желательно "перевернуть" страницу на poPortrait. Делаю так (отчет двухпроходной):
var CrossMaxWidth: extended = 0;                                                                  

procedure DBCross1OnAfterPrint(Sender: TfrxComponent);
begin
     if not Engine.FinalPass then
     begin
       if DBCross1.Width > CrossMaxWidth then
        CrossMaxWidth := DBCross1.Width;                      
     end
end;

procedure ReportTitle1OnBeforePrint(Sender: TfrxComponent);
begin
     if Engine.FinalPass then
     begin                 
      if CrossMaxWidth < Page1.PaperWidth div 2 then
      begin                  
       Page1.PaperSize := 9;  // DMPAPER_A4                                                          
       Page1.Orientation := poPortrait;
      end;                            
     end;                
end;

но размеры страницы не меняются. Что делать?

Комментарии

  • gpigpi
    отредактировано 18:18
    Параметры TfrxReportPage можно поменять только в главной процедуре скрипта или перед началом его формирования. Т.е. Вам нужно два раза формировать однопроходный отчёт
  • mvbmvb Казань
    отредактировано 18:18
    gpi написал: »
    Параметры TfrxReportPage можно поменять только в главной процедуре скрипта или перед началом его формирования. Т.е. Вам нужно два раза формировать однопроходный отчёт
    Понятно. Только как это сделать, если отчет автономный (не рисуется кодом)?
  • gpigpi
    отредактировано 18:18
    frxReport1.EngineOptions.DestroyForms := False;
    frxReport1.PrepareReport;
    if frxReport1.Variables.Variables['NeedChangeOrientation'] then
      TfrxReportPage(frxReport1.FindObject('Page1')).Orientation := poPortrait;
    frxReport1.ShowReport;
    
  • mvbmvb Казань
    отредактировано 18:18
    Это же в дельфи-коде? Или в скрипте?
  • gpigpi
    отредактировано 18:18
    написал:
    Это же в дельфи-коде?
    Да, в скрипте нужно только установить NeedChangeOrientation
  • mvbmvb Казань
    отредактировано 18:18
    gpi написал: »
    Да, в скрипте нужно только установить NeedChangeOrientation
    понятно, такое не пойдет, ибо отчет автономный, буду иначе выкручиваться. Спасибо за ответы.

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

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