Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-609
Paxer
2003-04-09 22:37
2003.05.01
MDI панель


14-783
tytus
2003-04-15 17:55
2003.05.01
Вид компонент.


3-467
msguns
2003-04-10 18:38
2003.05.01
Технология работы с IB/FB


14-773
blackman
2003-04-11 12:26
2003.05.01
Почему, каждого кто сидит за компом, называют программистом?


1-626
anbezr
2003-04-19 13:23
2003.05.01
Вызов метода класса