Доступ к списку MemoView отчёта из программы

отредактировано 14:30 Раздел: FastReport 2.xx VCL
Доброе время суток, программисты.

Подскажите пожалуйста, как добраться до всех MemoView отчёта из программы.

for i:=0 to MyRep.XXX.count-1 do
begin
  if MyRep.XXX[i] is TfrMemoView 
  then MyRep.XXX[i].font.color:=clGreen;
end;

Комментарии

  • отредактировано 14:30
    Pages - список страниц
    Objects - список объектов на данной страницы

    Т.е. оббегать все объекты на всех страницах нужно так:
    Pages[i].Objects[j]
    
  • отредактировано 14:30
    Пробую так:
    procedure TForm1.Button1Click(Sender: TObject);
    var view:TfrMemoView;
        i,j: integer;
    begin
      for i:=0 to r.Pages.Count do
      begin
        for j:=0 to r.Pages[i].Objects.Count-1 do
        try
          view:=TfrMemoView(r.Pages[i].Objects[j]);
          view.font.Size:=8;
        except
          on e: exception do;  
        end;
      end;
      r.ShowReport;
    end;
    

    Ошибка доступа к памяти.
  • отредактировано 14:30
    А так вот помоему нагляднее

    procedure TForm1.Button1Click(Sender: TObject);
    var
    t: TfrMemoView;

    begin
    t := TfrMemoView(frReport1.FindObject('Memo5'));
    if t <> nil then
    t.Memo.Text:= ComboBox1.Text;

    Danila
  • отредактировано 14:30
    Опа! Нашёл баг!

    Нужно так:
    procedure TForm1.Button1Click(Sender: TObject);
    var view:TfrMemoView;
        i,j: integer;
    begin
      for i:=0 to r.Pages.Count-1  {<<} do
      begin
        for j:=0 to r.Pages[i].Objects.Count-1 do
        try
          view:=TfrMemoView(r.Pages[i].Objects[j]);
          view.font.Size:=8;
        except
          on e: exception do;  
        end;
      end;
      r.ShowReport;
    end;
    
  • отредактировано 14:30
    А помоему Danila не прчитал вопрос
  • отредактировано 14:30
    Да только тут переменная наверное не очень нужна, хотя это уже тонкости
    view:=TfrMemoView(r.Pages[i].Objects[j]);
    view.font.Size:=8;
    
    =
    TfrMemoView(r.Pages[i].Objects[j]).font.Size:= 8
    

    А вот может, кто подскажет, в каком событии TfrReport можно
    узнать непосредственное содержимое самого TfrMemoView. То есть, какой текст находится в Мемо после подстановки из DataSource, но еще до печати. Чтобы этот текст можно было изменить...
    Я вот что то не нашел такой возможности...
  • отредактировано 14:30
    Эх, молодость, молодость ...

    Класс объекта кто проверять будет ?
    Потом опять FR виноватым останется ?
    procedure TForm1.Button1Click(Sender: TObject);
    var view:TfrMemoView;
       i,j: integer;
    begin
     for i:=0 to r.Pages.Count-1 do
       for j:=0 to r.Pages[i].Objects.Count-1 do 
        if r.Pages[i].Objects[j] is TfrMemoView then
         TfrMemoView(r.Pages[i].Objects[j]).font.Size:=8;
     r.ShowReport;
    end;
    

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

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