Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

QuickReport: pageCount [D5]


harisma ©   (2012-12-17 19:56:00) 

Необходимо в правом нижнем углу каждой страницы отчета писать, какая это страница (с этим проблемы не возникает - использую компоненту TQRSysData и ее свойство Data), и общее количество страниц в отчете (вот тут проблема - у TQRSysData нет возможности вернуть общее количество страниц в отчете).

Подскажите, как получить это значение (его же видно на превьюве в статусбаре).


Германн   (2012-12-20 18:49:00) [1]


> QRLabelPageCount - это я так понимаю название компоненты
> на форме отчета?
>

Да. Только конечно надо так:
QuickRep1.QRLabelPageCount.Caption := IntToStr(QuickRep1.QRPrinter.PageCount);


harisma   (2012-12-20 11:30:00) [2]

QRLabelPageCount - это я так понимаю название компоненты на форме отчета?


Германн   (2012-12-19 13:11:00) [3]


> Что делать?

Думать головой, а не ...
  QuickRep1.Prepare;
  QuickRep1.QRLabelPageCount := IntToStr(QuickRep1.QRPrinter.PageCount);
  QuickRep1.QRPrinter.Free;
  QuickRep1.QRPrinter := nil;
  QuickRep1.Preview;


Общий смысл такой - автор QR так и не смог найти способ узнать полное количество страниц в отчете до (или в процессе) его создания. Так что отчет приходится создавать дважды. Первый раз без показа ( QuickRep1.Prepare) чтобы узнать количество страниц. Второй раз уже с показом ( QuickRep1.Preview).


harisma   (2012-12-19 11:32:00) [4]

А чтобы не в ReportTitle, а в самом отчете на каждой страничке проставлялось это значение в виде: Страница 2 из 6, что следует использовать? Компонента TQRLabel что-то для этого не очень подходит, так как если ему в обработчике OnPrint написать Value := IntToStr(QuickRep1.QRPrint.PageCount); то получаем номер текущей страницы, а не общее количество страниц.
Что делать?


Германн   (2012-12-17 22:06:00) [5]

Из ФАК QuickReport
Q.  How can I determine the number of pages in my report before I preview or print it?
A.  If you call the report's Prepare method, it will generate the report without printing or previewing it.  After Prepare has finished, the pagecount will be in the report's qrprinter.pagecount property.  Please refer to the manual topic on Prepare for more information.
Example:
   QuickRep1.Prepare;
   QuickRep1.ReportTitle := 'This report has ' +
     IntToStr(QuickRep1.QRPrinter.PageCount) + ' pages';
   QuickRep1.QRPrinter.Free;
   QuickRep1.QRPrinter := nil;
   QuickRep1.Preview;


Наверх

Титульная страница Поиск, карта сайта Написать письмо