Фоновая картинка на всю страницу

отредактировано 09:26 Раздел: FastReport VCL
Люди добрые, подскажите как установить фоновую картинку на ВСЮ площадь страницы?
Page.BackPicture всегда печатается почему-то под RepotTitle. И все это соответственно с отступами.
Пробовал отдельный frxPicture на всю страницу вне бэндов ставить - поведение такое-же как и в случае с BackPicture.

Мне же нужно вывести именно фоновую картинку игнорируя любые бэнды и отступы. И само собой картинка должна печататься на каждой странице.

Если ли штатный метод для этого? И если нет, то хоть подскажите куда копать?

Комментарии

  • gpigpi
    отредактировано 09:26
    Что мешает сделать отчёт без отступов?
    Или попробуйте модифицировать frxClass.pas
      TfrxReportPage = class(TfrxPage)
      private
        FBackPicture: TfrxPictureView;
       ...
        FBackPictureStretched: Boolean;
        FBackPictureMarginless: Boolean;    //++++++++++
        FPageCount: Integer;
    ...
        property BackPictureStretched: Boolean read FBackPictureStretched write FBackPictureStretched default True;
        property BackPictureMarginless: Boolean read FBackPictureMarginless write FBackPictureMarginless
                 default False;      //++++++++++
        property PageCount: Integer read FPageCount write SetPageCount default 1;
    ...
    
    procedure TfrxReportPage.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX,
      OffsetY: Extended);
    begin
      if FBackPictureStretched then
        begin
          if FBackPictureMarginless then                   //++++++++
          begin                                            //++++++++
            FBackPicture.Width := FPaperWidth * fr01cm;    //++++++++
            FBackPicture.Height := FPaperHeight * fr01cm;  //++++++++
          end else                                         //++++++++
          begin                                            //++++++++
            FBackPicture.Width := (FPaperWidth - FLeftMargin - FRightMargin) * fr01cm;
            FBackPicture.Height := (FPaperHeight - FTopMargin - FBottomMargin) * fr01cm;
          end;                                             //++++++++
        end
      else
        begin
          FBackPicture.Width := FBackPicture.Picture.Width;
          FBackPicture.Height := FBackPicture.Picture.Height;
        end;
      if FBackPictureVisible and (not IsPrinting or FBackPicturePrintable) then
      if FBackPictureMarginless then                //++++++++
        FBackPicture.Draw(Canvas, ScaleX, ScaleY,   //++++++++
        OffsetX * ScaleX, OffsetY * ScaleY)         //++++++++
      else                                          //++++++++
        FBackPicture.Draw(Canvas, ScaleX, ScaleY,
          OffsetX + FLeftMargin * fr01cm * ScaleX,
          OffsetY + FTopMargin * fr01cm * ScaleY);
    end;
    
  • отредактировано September 2017
    Спасибо за ответ.

    Отчет без отступов делать нельзя в моем случае.
    На счет изменения frxClass, думал что буду это делать в последнюю очередь. Если ничего больше не поможет.

    В итоге, решил проблему с помощью Картинки в Overlay бэнде(нужно для печати картинки на каждой странице).

    А саму картинку подгоняю по размеру страницы с помощью такого кода:
        BackgroundPicture.Left:= -Page1.LeftMargin * fr01cm;
        BackgroundPicture.Top:= -Page1.TopMargin * fr01cm;
        BackgroundPicture.Width:= Page1.PaperWidth * fr01cm;
        BackgroundPicture.Height:= Page1.PaperHeight * fr01cm;
    

    Главное - чтобы у картинки было:
    Stretched = false;
    Align = baNone;

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

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