Поиск объекта в композитном отчете

отредактировано 02:37 Раздел: FastReport 3.0
Здраствуйте
Меня интересует как найти объект (в моем случае Memo10) в композитном отчете при использовании своего окна просмотра.
В случае родного окна просмотра FastReport 3, код приведенный ниже находит нужный объект и присваивает свойству Text значение '1111'
var
Memo : TfrxMemoView;
begin
Memo := frxReport1.FindObject('Memo10') as TfrxMemoView;
Memo.Text := '1111';
frxReport1.ShowReport;
end;
Но когда я вставляю этот код для своего окна просмотра, то компилятор выдает ошибку "Access violation at ...."
Ошибка возникает на строчке Memo := frxReport1.FindObject('Memo10') as TfrxMemoView;
Не понимаю в чем дело. Буду благодарен за совет.
В документации ничего нового не нашел.

Комментарии

  • отредактировано 02:37
    В готовом отчете искать объекты таким образом нельзя. Более того, их вообще никаким образом искать нельзя - у них дублирующиеся имена, и принадлежат они не самому отчету, а объекту Report.PreviewPages...
  • отредактировано 02:37
    Позволю не согласиться.
    Объекты искать можно.
    На счет дублирования имен, то нужно предварительно поменять имена, чтоб не было дублирования.
    Пример.
    У меня есть композитный отчет, который грузится в моем окне просмотра:
    frxReport1.Preview := nil;
    frxReport1.LoadFromFile('1.fr3');
    frxReport1.PrepareReport;
    frxReport1.LoadFromFile('2.fr3');
    frxReport1.PrepareReport(False);
    frxReport1.Preview := Form3.frxPreview1;
    Form3.Show;

    Мне нужно в цикле найти объекты Memo отчетах 1.fr3 и 2.fr3. Объекты с Memo75...Memo112. Части объектов, которые нужно найти, присваиваем имена Memo75...Memo90 для 1.fr3, а для 2.fr3 - Memo91...Memo112

    Но вся проблема в том, что поиск объектов осуществляется только в одном отчете. Вижу по количеству объектов - frxReport1.AllObjects, что это 2.fr3, что неудивительно.

    А как сделать, чтобы поиск осуществлялся еще и в 1.fr3?

    Код приведенный ниже присваивает значение '111' объекту Memo91 отчета 2.fr3
    var
    Memo : TfrxMemoView;
    begin
    frxReport1.Preview := nil;
    frxReport1.LoadFromFile('1.fr3');
    frxReport1.PrepareReport;
    frxReport1.LoadFromFile('2.fr3');
    frxReport1.PrepareReport(False);
    frxReport1.Preview := Form3.frxPreview1;

    Memo := frxReport1.FindObject('Memo91') as TfrxMemoView;
    Memo.Text := '111';

    frxReport1.ShowReport; //Иначе отображаться новое значение Memo91
    //не будет
    Form3.Show;
    end;

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

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