Форум: "Прочее";
Текущий архив: 2011.07.31;
Скачать: [xml.tar.bz2];
ВнизКак узнать, какие 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c