maison
Top.Mail.Ru Yandeks.Metrika
Forum: "Main";
Archive actuelle: 2003.05.01;
Télécharger: [xml.tar.bz2];

vers le bas

DX: QuickReport351. Le problème avec le comptage des pages avant la visualisation Trouver des branches similaires


MaxSit   (2003-04-17 19:01) [0]

Нужно перед просмотром документа знать количество страниц в сформированном отчете.

J'avais l'habitude de faire ceci:
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 на первой строчке.

Voici comment cela fonctionne:
//Form1.QuickRep1.Tag:=Form1.QuickRep1.QRPrinter.PageCount;
Form1.QuickRep1.Preview;



MaxSit   (2003-04-17 19:58) [3]

À la poursuite de:
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, то будем видеть следущее:

Page 1 de 1
Page 1 de 2
Page 1 de 3
...
Page 1 de 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]

Чтобы заранее знать общее количество страниц, надо сгенерить отчет. Так ? Так. Значит предварительный прогон неизбежен.
Не смотря на то, что образ отчета мы уже имеем, он не совсем нас удовлетворяет - в нем нет указания на общее число страниц. Значит мы должны его сгенерить заново, т.е. второй прогон также неизбежен...



Pages: 1 branche entière

Forum: "Main";
Archive actuelle: 2003.05.01;
Télécharger: [xml.tar.bz2];

à l'étage









Mémoire: 0.59 MB
Heure: 0.032 c
14-738
Sergo
2003-04-12 12:38
2003.05.01
Joyeuses Fêtes!


14-686
M_A_M
2003-04-15 11:23
2003.05.01
Protection du logiciel


1-590
Oleg1
2003-04-18 15:03
2003.05.01
Rapport gratuit 3.2


3-432
_MAX_
2003-04-11 17:18
2003.05.01
Capacité DBGrid


3-468
KIR
2003-04-14 12:13
2003.05.01
SELECT * renvoie plus de valeurs que celles visibles dans DBDesktop





afrikaans albanais Arabic arménien azerbaïdjanais basque Biélorusse Bulgare catalan Chinois simplifié) Chinois (traditionnel) croate Tchèque Danois Néerlandais English estonien Filipino Finlandais Français
galicien géorgien Allemand Grecque Créole haïtien hébreu Hindi Hongrois Islandais Indonesian irlandais Italien japonais Coréen letton lituanien macédonien Malay maltais Norvégien
persan Polonais Portugais roumain Russe serbe Slovaque Slovène Espagnol Swahili Suédois Thai turc ukrainien Urdu vietnamien gallois yiddish bengali bosniaque
Cebuano espéranto gujarati Hause hmong Igbo Javanais Kannada Khmer lao latin maori Marathi mongol népalais punjabi somali tamil telugu yoruba
zoulou
Английский Français Allemand Italien Португальский Русский Espagnol