Добавление band-ов в run-time

отредактировано 06:45 Раздел: FastReport 3.0
В run-time к станицам загруженного из файла отчета добавляю текстовое поле с помощью кода:
for ctr:=0 to frxReport1.PagesCount-1 do begin
  Page:=TfrxReportPage(frxReport1.Pages[ctr]);
  Memo:=TfrxMemoView.Create(Page);
  with Memo do begin
    CreateUniqueName;
    Align:=baClient;
    HAlign:=haCenter;
    VAlign:=vaCenter;
    Font.Color:=$9090ff;
    Font.Size:=100;
    Text:='Текст'
  end
end	
При просмотре сформированного отчета поле с этим текстом прорисовывается над всеми объектами кроме содержимого data-бендов.
Если вставляю его в design-time с помощью дизайнера и помещаю на передний план, то при формировании отчета все нормально отображается.

Каким образом можно добиться прорисовки этого поля над абсолютно всеми объектами отчета в run-time ?

Комментарии

  • отредактировано 06:45
    Если вообще для всех, то так:
    var
    i,j,k:integer;
    Memo:TfrxMemoView;
    begin
    
    for i := 0 to frxReport1.PagesCount -1 do
    for j := 0 to frxReport1.Pages[i].Objects.Count - 1 do
    for k := 0 to TfrxComponent(frxReport1.Pages[i].Objects[j]).Objects.Count -1 do
    begin
    Memo:=TfrxMemoView.Create(TfrxComponent(frxReport1.Pages[i].Objects[j]).Objects[k]);
     with Memo do begin
       CreateUniqueName;
       Align:=baClient;
       HAlign:=haCenter;
       VAlign:=vaCenter;
       SetBounds(0,0,100,100);
       Font.Color:=$9090ff;
       Font.Size:=100;
       Text:='Òåêñò'
     end;
    end;
    
  • отредактировано 06:45
    Я, наверное, неправильно сформулировал вопрос.
    Нужно чтобы этот текст добавлялся на каждую страницу и распологался поверх остальных бендов.
  • отредактировано 06:45
    Тогда так:
    var
    i,j:integer;
    Memo:TfrxMemoView;
    begin
    for i := 0 to frxReport1.PagesCount -1 do
    for j := 0 to frxReport1.Pages[i].Objects.Count - 1 do
    begin
    Memo:=TfrxMemoView.Create(frxReport1.Pages[i].Objects[j]);
    with Memo do begin
      CreateUniqueName;
      Align:=baClient;
      HAlign:=haCenter;
      VAlign:=vaCenter;
      Font.Color:=$9090ff;
      Font.Size:=100;
      Text:='Òåêñò'
    end;
    end;
    
  • отредактировано March 2006
    Опять не то.
    Так он накладывается на каждый объект отчета, а мне нужно всего один раз на страницу. У меня получается так, что это Memo ложится под Memo-полями Data-бендов, а нужно чтобы поверх них.
    У меня получается так, а нада так
  • отредактировано 06:45
    var
    i:integer;
    Memo:TfrxMemoView;
    begin
    frxReport1.PrepareReport();
    for i:= 0 to frxReport1.PreviewPages.Count -1 do
    begin
     Memo:=TfrxMemoView.Create(frxReport1.PreviewPages.Page[i]);
     with Memo do begin
       CreateUniqueName;
       Rotation := 315;
       SetBounds(round((frxReport1.PreviewPages.Page[i].Width - 300)/2),round((frxReport1.PreviewPages.Page[i].Height - 400)/2),300,400);
       Font.Color:=$9090ff;
       Font.Size:=100;
       Text:='Òåêñò'
     end;
    end;
     frxReport1.ShowPreparedReport;
    
    end;
    
  • отредактировано 06:45
    Огромное спасибо за вариант, получилось.
    Только есть один неприятный момент при формировании отчета на печать эта надпись исчезает. Получается эффект недоработанной программы. ;)

    В дизайнере при вызове контекстного меню на объекте есть такие процедуры как "На передний план" и "На задний план". Как это реализовать в rum-time.
  • отредактировано 06:45
    var
    i,j:integer;
    memo1:TfrxMEmoView;
    Band:TfrxOverlay;
    begin
    for i := 0 to frxReport1.PagesCount -1 do
    begin
    Band := TfrxOverlay.Create(frxReport1.Pages[i]);
    Memo1:=TfrxMemoView.Create(Band);
    Band.CreateUniqueName;
    Band.PrintOnTop := True;
    Band.SetBounds(0,0,round(frxReport1.Pages[i].Width),round(frxReport1.Pages[i].Height));
    with Memo1 do begin
     CreateUniqueName;
     Align:=baClient;
     HAlign:=haCenter;
     VAlign:=vaCenter;
     Rotation := 315;
     Font.Color:=$9090ff;
     Parent.Objects.Remove(Memo1);
     Parent.Objects.Add(Memo1);
     Font.Size:=100;
     Text:='TEXT'
    end;
    end;
    frxReport1.ShowReport();
    end;
    

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

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