Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
ВнизDX: QuickReport351. Проблема с подсчетом страниц перед просмотром Найти похожие ветки
← →
MaxSit (2003-04-17 19:01) [0]Нужно перед просмотром документа знать количество страниц в сформированном отчете.
Раньше делал так:
Form1.QuickRep1.Prepare;
PageCount:=Form1.QuickRep1.QRPrinter.PageCount;
Form1.QuickRep1.Preview; // при формировании использую PageCount
Но, когда отчеты стали по 200-300 страниц, то использовать
Prepare стало невыносимо, т.к. он выполняется по времени столько же, что и Preview. На этом сайте нашел: <<Как в QuickReports вставить "Страница № из ">>. Там предлогается использовать:
TQRSysData.Data:=qrsPageCount;
, но у меня qrsPageCount нет, глянул в более старые версии QR, он там тоже отсутствует.
Какие будут идеи. Заранее спасибо.
← →
Anatoly Podgoretsky (2003-04-17 19:37) [1]Зато есть PageCount у QrPrinter, а вот откуда они взяли qrsPageCount, наверно в бреду.
И скажи щачем ты делаешь QuickRep1.Prepare; так тратишь время.
← →
MaxSit (2003-04-17 19:54) [2]Дело в том, что если сделать так:
Form1.QuickRep1.Tag:=Form1.QuickRep1.QRPrinter.PageCount;
Form1.QuickRep1.Preview;
вылетает ошибка AV на первой строчке.
Так работает:
//Form1.QuickRep1.Tag:=Form1.QuickRep1.QRPrinter.PageCount;
Form1.QuickRep1.Preview;
← →
MaxSit (2003-04-17 19:58) [3]В догонку:
Form1.QuickRep1.Tag - это и есть моя переменная PageCount
← →
Anatoly Podgoretsky (2003-04-17 20:28) [4]А зачем тебе отдельная переменная, когда значение прямо в QuickRep1.QRPrinter.PageCount; в любой момент напрямую доступно.
← →
MaxSit (2003-04-17 20:38) [5]Именно для того, чтобы во время Preview заполнить на каждой странице: "Страница PageNo из PageCount".
Если это заполнение вешать на событие печати самого QRLabel, то будем видеть следущее:
Страница 1 из 1
Страница 1 из 2
Страница 1 из 3
...
Страница 1 из 100
и только после формирования всего документа мы уже получим реальный QuickRep1.QRPrinter.PageCount.
← →
Anatoly Podgoretsky (2003-04-17 20:59) [6]Эту часть у тебя выполняет Prepare
А с QRPrinter надо быть поострожнее, он во многих местах устанавливается в NIL, поэтому обращение к нему очень опасно.
← →
Anatoly Podgoretsky (2003-04-17 21:03) [7]У тебя дважы/трижды будет происходить формирование страниц, prepare, preview, print
Потери времени ужасны.
← →
MaxSit (2003-04-17 21:49) [8]QR карявый, я конечно согласен, ну нет пока других вариантов. А QR использую давно, мы с Вами (Anatoly Podgoretsky) уже не первый раз по этому поводу дискусируем. Переделывать весь проект под новый генератор пока нет возможности.
А клиенты требуют, чтобы на каждой странице была подпись количества страниц и текущая страница, и где-то они правы, это удобно.
← →
Anatoly Podgoretsky (2003-04-17 22:26) [9]MaxSit © (17.04.03 21:49)
Нельзя чказать что корывый, но ты должен понимать что делаешь, в товем случае явно QRPrinter на данной стадии равен NIL-
Вот что сказано в FAQ
QuickRep1.Prepare;
QuickRep1.ReportTitle := "This report has " +
IntToStr(QuickRep1.QRPrinter.PageCount) + " pages";
QuickRep1.QRPrinter.Free;
QuickRep1.QRPrinter := nil;
QuickRep1.Preview;
Это должно тебе помочь
← →
MaxSit (2003-04-17 22:40) [10]Да, но опять таки:
QuickRep1.Prepare;
А так хочется без него.
← →
Johnmen (2003-04-18 00:04) [11]Чтобы заранее знать общее количество страниц, надо сгенерить отчет. Так ? Так. Значит предварительный прогон неизбежен.
Не смотря на то, что образ отчета мы уже имеем, он не совсем нас удовлетворяет - в нем нет указания на общее число страниц. Значит мы должны его сгенерить заново, т.е. второй прогон также неизбежен...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c