Поиск объекта в композитном отчете
Здраствуйте
Меня интересует как найти объект (в моем случае 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;
Не понимаю в чем дело. Буду благодарен за совет.
В документации ничего нового не нашел.
Меня интересует как найти объект (в моем случае 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;
Не понимаю в чем дело. Буду благодарен за совет.
В документации ничего нового не нашел.
Комментарии
Объекты искать можно.
На счет дублирования имен, то нужно предварительно поменять имена, чтоб не было дублирования.
Пример.
У меня есть композитный отчет, который грузится в моем окне просмотра:
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;