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

Вниз

Как узнать, какие Band-ы напечатались?   Найти похожие ветки 

 
И. Павел ©   (2011-04-08 11:24) [0]

Здравствуйте.

Моя программа использует QReport для печати отчета. Отчет состоит из title band и цепочки связанных с ней ChildBand.
После того, как пользователь напечатает некоторые страницы отчета, нужно удалить соответствующие band-ы (и соответствующие им записи в таблице).

Подскажите, пожалуйста, можно ли как-нибудь узнать, какие band-ы были напечатаны?
Считается, что размеры всех band-ов достаточно малы, чтобы не появился тот, который займет больше одной страницы (каждый band - это пропуск).

Заранее спасибо.

PS: пытался найти свойство, говорящее, на какой странице лежит band, но не нашел. Предполагаю, что его и нет, ведь можно просто сменить настройки принтера, ширину полей, и band разместится уже на другой странице.


 
И. Павел ©   (2011-04-08 11:28) [1]

У бандов есть свойство After print.
Извиняюсь за глупый вопрос (который раз уже долго с чем-то мучаюсь и нахожу решение почти сразу, как задам вопрос на форуме :)


 
И. Павел ©   (2011-04-08 11:45) [2]

НЕТ, After Print не помогает... Это событие срабатывает, когда band подготовлен для печати а не напечатан. Например, при вызове preview печатаются все банды.

Так что мой вопрос все еще в силе.


 
clickmaker ©   (2011-04-08 11:59) [3]

> как пользователь напечатает некоторые страницы отчета, нужно
> удалить соответствующие band-ы (и соответствующие им записи
> в таблице).

а после прочтения отчет сжечь? )


 
И. Павел ©   (2011-04-08 12:03) [4]

> а после прочтения отчет сжечь? )

Просто будет буфер печати. Туда будут записывать все пользователи и при необходимости один пользователь сможет распечатать весь буфер или некоторые страницы. Задачу поставили жестко: оператор выбирает не какие печыатать band-ы (пропуска), а именно - какие номера страниц...


 
И. Павел ©   (2011-04-08 13:02) [5]

Придумал один вариант: просто после вызова QuickReport.print буду ждать, чтобы прошло несколько событий EndPage, и, когда пойму, что сейчас начали генерироваться страницы, которые будут печататься, буду анализировать - какие band напечатались по событию AfterPrint этих band. Но этот метод мне не нравится, т.к. отслеживание печати будет вестись по косвенным признакам, и так можно запросто нарваться на какую-нибудь ошибку.

Буду рад, если кто-нибудь порекомендует другой способ.


 
clickmaker ©   (2011-04-08 13:21) [6]

Sender.ParentReport.State = qrPrint ?


 
b z   (2011-04-08 13:31) [7]

Так физически может и не распечатать, как тогда быть ? :)


 
И. Павел ©   (2011-04-08 13:37) [8]

> [6] clickmaker ©   (08.04.11 13:21)

У меня во время всех сообщений AfterPrint состояние отчета = qrAvailable, поэтому даже во время печати такой код не заносит номера нужных band в memo:

procedure TBufferForm.TitleBand1AfterPrint(Sender: TQRCustomBand;
 BandPrinted: Boolean);
begin
 if Sender.ParentReport.State = qrPrint then
   Memo1.Lines.Add("1");
end;


> [7] b z   (08.04.11 13:31)

Это не важно. Если не распечатается - еще раз в буфер занесут.


 
Anatoly Podgoretsky ©   (2011-04-08 14:12) [9]

> clickmaker  (08.04.2011 11:59:03)  [3]

Съесть


 
Anatoly Podgoretsky ©   (2011-04-08 14:14) [10]

> b z  (08.04.2011 13:31:07)  [7]

ВЕБ камера


 
И. Павел ©   (2011-04-11 08:58) [11]

Проблема все еще актуальна.
Если кто-нибудь знает, пожалуйста, подскажите решение.

Пока что думаю, что скорее всего не буду заниматься ерундой, отслеживая косвенные показатели QReport (а то это уже сродни варианту с веб-камерой :), и если не найду нормального способа решения задачи - буду просто рисовать на контексте принтера (все равно все динамически генерировать придется).


 
И. Павел ©   (2011-04-11 16:09) [12]

Я додумался, как определить - на какой странице какой band расположен!!!

На каждый band я положил компонент TQRSysData и установил ему свойство Data = qrsPageNumber. После Print будет ясно, какой band какой странице принадлежал!

Уж думал что не придумаю способ :)



Страницы: 1 вся ветка

Текущий архив: 2011.07.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
15-1302772506
Дмитрий С
2011-04-14 13:15
2011.07.31
Какова вероятность, что два случайных числа равны.


15-1302604376
БарЛог
2011-04-12 14:32
2011.07.31
Антиусилитель wi-fi сигнала


15-1302697009
Иксик
2011-04-13 16:16
2011.07.31
Gource


2-1303704832
petvv
2011-04-25 08:13
2011.07.31
Целая и дробная часть из двух полей


15-1302090541
oxffff
2011-04-06 15:49
2011.07.31
AfterConstruction, beforedestruction у record