Pagefooter и ориентация страницы

отредактировано 10:36 Раздел: FastReport 4.0
Здравствуйте.

Есть проблема: в Preview вызываю диалог параметров страницы и указываю для текущей страницы альбомную ориентацию.
Страница разворачивается на альбомную, но при этом PageFooter пропадает, а данные печатаются до низа страницы впритык (с PageHeader все нормально, он остается на месте).

В чем может быть проблема?

Комментарии

  • TopCoreTopCore Мариуполь
    отредактировано 10:36
    Если <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->PageFooter<!--fontc--></span><!--/fontc--> есть в окошке компонентов (<!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->ObjectTree View<!--fontc--></span><!--/fontc-->), то это предположительно из-за большой высоты <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->MasterData <!--fontc--></span><!--/fontc-->и/или других бэндов. Можно уменьшить высоту бэндов.
  • отредактировано 10:36
    TopCore написал: »
    Если <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->PageFooter<!--fontc--></span><!--/fontc--> есть в окошке компонентов (<!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->ObjectTree View<!--fontc--></span><!--/fontc-->), то это предположительно из-за большой высоты <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->MasterData <!--fontc--></span><!--/fontc-->и/или других бэндов. Можно уменьшить высоту бэндов.
    Да, <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->PageFooter<!--fontc--></span><!--/fontc--> присутствует в <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->ObjectTree View<!--fontc--></span><!--/fontc-->. Вообще у меня там всего 3 бенда: <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->PageHeader<!--fontc--></span><!--/fontc-->, <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->MasterData<!--fontc--></span><!--/fontc--> и <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->PageFooter<!--fontc--></span><!--/fontc-->. В книжном формате <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->PageFooter<!--fontc--></span><!--/fontc--> отображается на превью нормально, в низу страницы. А вот когда я эту самую страницу разворачиваю на альбомную, то такое впечатление, что <!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->MasterData<!--fontc--></span><!--/fontc--> вытесняет его.
    Почему?
  • gpigpi
    отредактировано 10:36
    Так и должно быть. При смене ориентации для одной страницы отчёт не перестраивается
  • отредактировано 10:36
    gpi написал: »
    Так и должно быть. При смене ориентации для одной страницы отчёт не перестраивается
    А как сделать, чтобы перестроился с учетом ориентации?
  • gpigpi
    отредактировано 10:36
    Нужно выделять эту страницу с переменной ориентацией в отдельную TfrxReportPage и перестраивать отчёт, перехватив нажатие кнопки настроек страницы в превью.
  • отредактировано 10:36
    gpi написал: »
    Нужно выделять эту страницу с переменной ориентацией в отдельную TfrxReportPage и перестраивать отчёт, перехватив нажатие кнопки настроек страницы в превью.
    Честно говоря, я ничего не понял.
    Если можно, какой-нибудь минимальный пример.
    Спасибо.
  • gpigpi
    отредактировано 10:36
    Пример немного другой задачи с перехватом обработчика вызова диалога настроек страницы
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, frxClass, frxPreview, frxPreviewPageSettings;
    
    type
      TForm1 = class(TForm)
        frxReport1: TfrxReport;
        procedure FormCreate(Sender: TObject);
        procedure frxReport1Preview(Sender: TObject);
        procedure NewOnClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
         frxReport1.PreviewPages.LoadFromFile('test.fp3');
         frxReport1.ShowPreparedReport;
    end;
    
    procedure TForm1.NewOnClick(Sender: TObject);
    var
      APage: TfrxReportPage;
      i: integer;
    begin
      if frxReport1.Engine.Running then Exit;
      APage := frxReport1.PreviewPages.Page[TfrxPreview(frxReport1.Preview).PageNo - 1];
    
      if Assigned(APage) then with TfrxPageSettingsForm.Create(Application) do
      begin
        Page := APage;
        Report := frxReport1;
        if ShowModal = mrOk then
        begin
          if NeedRebuild then
          begin
           try
             frxReport1.Preview.Lock;
             for i := 0 to frxReport1.PreviewPages.Count - 1 do
              begin
                with TfrxReportPage(frxReport1.PreviewPages.Page[i]) do
                 begin
                  Orientation := APage.Orientation;
                  PaperWidth := APage.PaperWidth;
                  PaperHeight := APage.PaperHeight;
                  PaperSize := APage.PaperSize;
    
                  LeftMargin := APage.LeftMargin;
                  RightMargin := APage.RightMargin;
                  TopMargin := APage.TopMargin;
                  BottomMargin := APage.BottomMargin;
                 end;
                frxReport1.PreviewPages.ModifyPage(i , frxReport1.PreviewPages.Page[i]);
              end;
           finally
             frxReport1.Preview.Unlock;
          end;
          end
          else
          begin
            try
              frxReport1.Preview.Lock;
              frxReport1.PreviewPages.ModifyPage(TfrxPreview(frxReport1.Preview).PageNo - 1, Page);
            finally
              frxReport1.Preview.Unlock;
            end;
          end;
        end;
        Free;
      end;
    end;
    
    procedure TForm1.frxReport1Preview(Sender: TObject);
    begin
       if frxReport1.PreviewForm is TfrxPreviewForm then
        begin
         TfrxPreviewForm(frxReport1.PreviewForm).PageSettingsB.OnClick := NewOnClick;
        end;
    
    end;
    
    end.
    
  • отредактировано 10:36
    gpi написал: »
    Пример немного другой задачи с перехватом обработчика вызова диалога настроек страницы
    Спасибо, буду разбираться.

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

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