Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 90
Текст из файла (страница 90)
Оно вызывается командойR e p o r t S e t t i n g контекстного меню страницы отчета или двойным щелчкомна странице отчета.Страница отчета может иметь рамку, параметры которой задает свойствоF r a m e типа T Q R F r a m e .С помощью свойства P r i n t e r S e t t i n g типа T Q u i c k R e p P r i n t e r S e t t i n g s устанавливаются параметры принтера, например: F i r s t P a g e и L a s t P a g e — номерпервой и последней печатаемой страницы. Параметры принтера можно устанавливать также с помощью стандартных диалогов P r i n t D i a l o g иP r i n t e r S e t u p D i a l o g или метода P r i n t e r S e t u p .Отчет характеризуется тремя параметрами, которые задаются в свойствеO p t i o n s множественного типа T Q u i c k R e p o r t O p t i o n s :• F i r s t P a g e H e a d e r — печать верхнего колонтитула на первой страницеотчета;• L a s t P a g e F o o t e r — печать нижнего колонтитула на последней страницеотчета;• C o m p r e s s i o n — отчет сохраняется в сжатом формате, при этом уменьшается объем занимаемой памяти, но снижается быстродействие.Свойство P r i n t l f E m p t y типа b o o l определяет, выводить ли данные отчетадля пустого набора данных.
По умолчанию свойство имеет значение t r u e , иотчет печатается, даже если в наборе данных пет ни одной записи. Это удобно, например, при печати бланков. Если свойству P r i n t l f E m p t y установитьзначение f a l s e , то для пустого набора данных отчет не выводится, точнее, выводится пустая страница. То есть при отсутствии записей отсутствует не только область данных, но и ряд других полос, например, заголовок отчета.Как правило, свойства отчета и его отдельных элементов устанавливаются при создании отчета на этапе разработки приложения.Для печати отчета предназначен метод P r i n t , сразу после вызова которогоотчет подготавливается к печати и направляется на установленный в системеЧасть 3. Современные СУБД и их применение426принтер.
Дополнительных подтверждений от пользователя не требуется. Принеобходимости текущий принтер и его параметры устанавливаются до начала печати, например, с помощью вызова метода P r i n t e r S e t u p . Метод P r i n tможет вызываться, например, при нажатии кнопки П е ч а т ь , расположеннойна форме, с которой пользователь работает.Если компонент-отчет Q u i c k R e p связан с набором данных, записи которого выводятся в сетке D B G r i d формы, то порядок записей отчета соответствует порядку записей, видимых пользователем на форме.
После отбора (фильтрации) записей и / и л и сортировки при нажатии кнопки П е ч а т ь происходитвывод отчета, причем учитывается новый состав и порядок следования записей.При формировании отчета изменяется положение указателя текущей записи, поэтому при необходимости разработчик должен предусмотреть запоминание и восстановление положения указателя, например, с помощью закладки.Пример. Процедура предварительного просмотра и печати отчета.voidfastcall TForml::Button2Click(TObject *Sender){TBookmark bm;bm=Tablel->GetBookmark();/ / Просмотр отчетаForm2->QuickRepl->Preview();/ / Печать отчетаForm2->QuickRepl->Print();Tablel->GotoBookmark(bm) ;Tablel->FreeBookmark(bm) ;}Закладка bm используется для запоминания и восстановления положения указателя текущей записи. В файле исходного кода модуля формы F o r m l ,из которой выполняется печать отчета, следует указать директиву препроцессора # i n c l u d e " U n i t 2 .
h " для подключения заголовочного файла модуляформы F o r m 2 , в которой размещен компонент отчета.При печати отчета генерируются события B e f o r e P r i n t и A f t e r P r i n t типаT Q R B e f o r e P r i n t E v e n t . С помощью обработчика первого события можно задать действия, выполняемые непосредственно перед печатью отчета, а с помощью обработчика второго события — действия, выполняемые сразу послеокончания печати.В процессе выполнения приложения для предварительного просмотра отчета перед печатью служит метод P r e v i e w , вызывающий окно просмотра.В этом окне можно выполнить следующее: просмотреть отчет в различных/ I. Borland С++ Builder427масштабах; сохранить отчет в файле; загрузить предварительно сохраненныйотчет; направить отчет в печать.Возможности метода P r e v i e w превосходят возможности метода P r i n t , поэтому чаще выполняют именно предварительный просмотр документа, а непечать, что удобно и при отладке приложения. Печатать отчет можно непосредственно из окна предварительного просмотра.На этапе разработки приложения также можно просмотреть отчет, выполнив команду P r e v i e w (Просмотр) контекстного меню отчета.
Внешний видотчета будет таким же, как при печати или в окне просмотра при выполненииприложения, за исключением отсутствия значений вычисляемых полей.Разработчик имеет возможность создать свое окно предварительного просмотра отчета, использовав компонент Q R P r e v i e w .Полоса отчета (компонент Q R B a n d ) является основной составной частью (элементом) отчета, на которой размещаются другие его компоненты.Тип полосы определяется свойством B a n d T y p e типа T Q R B a n d T y p e , которое может принимать, к примеру, следующие значения:• r b T i t l e — заголовок отчета (печатается в начале отчета под верхним колонтитулом);• r b P a g e H e a d e r — верхний колонтитул, который печатается сверху на каждой странице, в том числе на первой, если включен (по умолчанию) параметр F i r s t P a g e F o o t e r свойства O p t i o n s компонента отчета; если этот параметр выключен, то верхний колонтитул на первом листе не печатается;• r b D e t a i l — данные записей набора данных; выводятся для каждой записи набора данных;• r b C h i l d — дочерняя полоса, печатаемая после полосы, с которой она связана.При установке тина полосы она автоматически размещается па своем месте в отчете и выравнивается по ширине страницы отчета с учетом левого иправого полей.
Разработчик не имеет возможности переместить полосу надругое место с помощью мыши. Изменить ширину полосы можно косвенно,изменяя размеры страницы и полей. Высота полосы меняется путем передвижения мышью верхней или нижней рамки полосы или через установку значения свойства H e i g h t в Инспекторе объектов.Добавить новую полосу к отчету можно следующими двумя способами:• поместить компонент Q R B a n d в отчет и присвоить требуемое значениес в о й с т в у BandType;• установить значение true соответствующему подсвойству свойства B a n d sкомпонента Q u i c k R e p , при этом к отчету добавляется полоса, а ее свойству B a n d T y p e автоматически устанавливается нужное значение.При создании в отчет нужно включать не более одной полосы каждого вида,гак как при печати отчета «лишние» полосы одного и того же вида учитываться не будут.
Полосы определенного вида, например, полоса r b D e t a i l , приЧасть 3. Современные СУБД и их применение428формировании отчета создаются автоматически для каждой записи набораданных.В процессе выполнения приложения при вызове метода P r e v i e w также генерируются события B e f o r e P r i n t и A f t e r P r i n t .После создания полосы определенного типа в ней размещаются соответствующие компоненты, при этом необходимо использовать только компоненты страницы Q R e p o r t .
Размещение на полосе других компонентов, например, L a b e l или E d i t , не вызывает ошибки трансляции, но в сформированныйотчет такие компоненты не попадают.Можно разместить компонент отчета и вне полосы — непосредственно на компоненте-отчете Q u i c k R e p . В этом случае он будет выводиться на каждой странице отчета (например, компонент Q R I m a g e , содержащий логотип фирмы).Обычно используются следующие компоненты отчета:• Q R L a b e l — надпись, содержащая текст (аналог надписи L a b e l ) , котораяможет размещаться на любой полосе, но для полос данных обычно неиспользуется;• Q R D B T e x t — значение поля записи (аналог компонента D B T e x t ) ; обычно размещается в полосе данных;• Q R E x p r — значение, формируемое на основе выражения, в котором могут использоваться значения полей записей; обычно используется дляполос данных и нижних колонтитулов;• QRSysData — системная информация, обычно используемая для итоговых полос и полос колонтитулов; ее вид определяется свойством D a t aтипа T Q R S y s D a t a T y p e , принимающим, к примеру, значения:• q r s C o l u m n N o — помер текущего столбца (для одноколоночного отчета равен единице);• q r s D a t e T i m e — текущие дата и время;• QRImage — графический образ, загружаемый аналогично графическому образу Image (может быть использован в любой полосе, но обычноне размещается в полосах данных); с помощью компонента Q R I m a g eвыводится, например, логотип организации; кроме того, следует отличать этот компонент и от компонента Q R D B I m a g e , который обычно размещается в полосе данных и отображает рисунок из поля таблицы;• QRShape — геометрическая фигура, размещаемая в любой полосе.Перед компонентом Q R S y s D a t a может находиться надпись, которая указывается в свойстве T e x t типа A n s i S t r i n g .
По умолчанию надпись отсутствует.ПростойотчетПростой отчет представляет собой отчет на основе данных из одного набора данных и содержит сведения, которые выводятся в табличном виде бездополнительных условий, например, группирования данных. Размещение ивид печатаемых в отчете данных аналогичны размещению и виду данных, ото-/ I. Borland С++ Builder429бражаемых в сетке D B G r i d . Отличием является то, что данные отчета размещаются не на форме, а на бумажном документе, и их нельзя редактировать.Рассмотрим действия, выполняемые при подготовке простого отчета, напримере перечня книг по программированию (см. рис.
11.23). Многие из этихдействий используются и при разработке отчетов других видов. Д л я создания простого отчета требуется выполнить следующее:• разместить на форме компонент Q u i c k R e p ;• создать для компонента Q u i c k R e p требуемые полосы отчета;• разместить в полосах нужные компоненты отчета, чаще всего Q R L a b e l ,QRDBText и QRExpr;• создать для событий, например, нажатия кнопок с заголовками Печатьи Просмотр, обработчики, в которых вызываются методы печати и предварительного просмотра отчета соответственно.Размещение на форме компонента отчета, установка параметров отчета, атакже создание обработчика события нажатия кнопки печати рассмотрено приописании компонента Q u i c k R e p выше.Простой отчет может содержать следующие полосы, перечисляемые в порядке их размещения на странице:• верхний колонтитул ( r b P a g e H e a d e r ) ;• заголовок отчета ( r b T i t l e ) ;• заголовки столбцов (rbColumnHeader);• данные ( r b D e t a i l ) ;• итог отчета ( r b S u m m a r y ) ;• нижний колонтитул ( r b P a g e F o o t e r ) .Н а этапе разработки название каждой полосы выводится серым цветом вее левом нижнем углу.Можно добавить к проекту шаблон простого отчета, вызвав командой менюF i l e / N e w / O t h e r .