Копирование Reportpage
Привет всем! Столкнулся со следующей проблемой... есть 2 страницы отчета. 2ую страницу в зависимости от определенного параметра необходимо постоянно добавлять к отчету....
Т.е. у меня в репорте есть Page1, Page2. Хочу сделать чтобы динамически создавались страницы как Page2.
Пишу вот так, но не работает.... чистая страница((((
Что я делаю не так? и вообще можно ли динамически создавать страницы на основе имеющихся?
Т.е. у меня в репорте есть Page1, Page2. Хочу сделать чтобы динамически создавались страницы как Page2.
Пишу вот так, но не работает.... чистая страница((((
Page3 := TfrxReportPage.Create(DM1.frxReport1.Report);
Page3.CreateUniqueName;
Page3.Name := 'Page3';
Stream := TMemoryStream.Create;
TfrxReportPage(DM1.frxReport1.FindObject('Page2')).SaveToStream(Stream);
Stream.Position := 0;
Page3.LoadFromStream(Stream);
Stream.Free;
Что я делаю не так? и вообще можно ли динамически создавать страницы на основе имеющихся?
Комментарии
Я тоже давненько занимался проблемой дублирования объектов, но так и не нашёл ответа, как это сделать по-нормальному.
Для дублировать TfrxMemoView я перебирал все Memo в цикле и копировал свойства поштучно (хотя, скорее всего, это недостаток опыта в сериализации).
Пришлите тестовый проект, возможно, получится покрутиться и обойтись без дублирования страницы.
Спасибо, что отозвались. Я думал совсем форум мертвый...)
Вот тестовый проект. Копируется 2ая страница, но с ошибками памяти....
Убрал все датасеты, все ссылки на них, даже пришлось в блокноте редактировать файл test.fr3 - всё равно пишет ошибку, что источники данных не найдены.
Пришлите, пожалуйста, проект, в котором хотя бы какой-нибудь отчёт сформируется. Список ошибок в прикреплённом файле.
В отчёте страниц Page1 и Page2 нету, нет смысла вызывать их в цикле - будут ошибки. И кстати, если добавлять объекты в PageTest.Objects.Add , но не добавлять их в список в FastReport, то при выходе из программы будет ошибка, т.к. память надо освобождать самостоятельно
Вот другой пример отчета, элементарный... просто Мемо. Надо создать 2 страницу и на ней такой же Мемо.... и получить на вновь созданной странице к нему доступ....)
"Некоторые требуемые файлы отсутствуют. Если вы хотели просмотреть тему, возможно эта тема перемещена или удалена. Вернитесь назад и попробуйте снова."
Вот
PageTest := TfrxReportPage.Create(nil);
PageTest.AssignAll(TfrxReportPage(frxReport1.FindObject('Page1')));
PageTest.Name := 'Page2';
PageTest.Parent := frxReport1;
Таким образом создается 2ая страница, на которой все названия элементов такие же как и на Page1, но управление ими независимо от Page1!
В том и проблема, что ни 1 ваш вариант, ни 2 мне не подходит) мне нужно знать имена элементов на новой дублированной странице.....