Проблема с изменением ориентации страницы в отчете

отредактировано 15:53 Раздел: FastReport 4.0
Использую FastReport4, в котором хочу изменять ориентацию страницы с портретной на альбомную в случае определенного размера кросс-таба, выходящего за границы страницы, для чего использую следующий скрипт:
var DBCrossWidth: extended;
procedure EnumReportOnStartReport(Sender: TfrxComponent);
begin 
 if Engine.FinalPass then                                                    
   if DBCrossWidth > 680 then
     Page1.Orientation := poLandscape;            
end;

procedure Enum_DBCrossOnAfterPrint(Sender: TfrxComponent);
begin
 DBCrossWidth := Enum_DBCross.Width;  
end;
Как не сложно догадаться, использую двухпроходной отчет, при запуске которого на первом шаге я запоминаю (заношу в спец. переменную) ширину кросс-таба, а на втором в случае необходимости изменяю ориентацию страницы. Но! Так должно происходить по теории. :) А на деле ровным счетом ничего не происходит. В чем проблема?

Комментарии

  • Stalker4Stalker4 123
    отредактировано 15:53
    madmech написал: »
    Использую FastReport4, в котором хочу изменять ориентацию страницы с портретной на альбомную в случае определенного размера кросс-таба, выходящего за границы страницы, для чего использую следующий скрипт:
    var DBCrossWidth: extended;
    procedure EnumReportOnStartReport(Sender: TfrxComponent);
    begin 
     if Engine.FinalPass then                                                    
       if DBCrossWidth > 680 then
         Page1.Orientation := poLandscape;            
    end;
    
    procedure Enum_DBCrossOnAfterPrint(Sender: TfrxComponent);
    begin
     DBCrossWidth := Enum_DBCross.Width;  
    end;
    
    Как не сложно догадаться, использую двухпроходной отчет, при запуске которого на первом шаге я запоминаю (заношу в спец. переменную) ширину кросс-таба, а на втором в случае необходимости изменяю ориентацию страницы. Но! Так должно происходить по теории. :) А на деле ровным счетом ничего не происходит. В чем проблема?

    Насколько я знаю, событие OnStartReport запускается только один раз при запуске самого отчета.
    Попробуй для этого использовать какое либо другое событие, например OnBeforePrint страницы отчета.
  • отредактировано 15:53
    Stalker4 написал: »
    Насколько я знаю, событие OnStartReport запускается только один раз при запуске самого отчета.
    Попробуй для этого использовать какое либо другое событие, например OnBeforePrint страницы отчета.
    Занесение изменения ориентации страницы в OnBeforePrint страницы отчета ничего не дает. Какие-нибудь еще варианты будут?
  • отредактировано 15:53
    Ну, дык, и что? :)
  • Stalker4Stalker4 123
    отредактировано 15:53
    madmech написал: »
    Занесение изменения ориентации страницы в OnBeforePrint страницы отчета ничего не дает. Какие-нибудь еще варианты будут?
    Если в отчета есть диалоговая форма, то смену ориентации отчета можно повесить на нажатие кнопки (OnClick) на форме.
  • отредактировано 15:53
    Проблему решил иначе. Я рассчитываю критическую ширину ВНЕ отчете внутри самого Дельфи и там же меняю по необходимости ориентацию страницы.

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

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