Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 89
Текст из файла (страница 89)
По умолчанию он имеет имя Q u i c k R e p l . Если наформе размещается другой отчет (обычно так не делается), он получает имяQ u i c k R e p 2 и т. д.Компонент Q u i c k R e p при помещении его на форму имеет вид страницыформата А4, первоначально отображаемой в натуральную величину.
При разработке приложения можно изменить масштаб страницы и размещенных наней компонентов с помощью свойства Z o o m типа i n t . Значение этого свойства устанавливается в процентах, по умолчанию 100%.Отчет можно поместить на любую форму приложения, например, на главную. В этом случае отчет (страница) создает своего рода фон, на котором расположены управляющие элементы формы.Компонент Q u i c k R e p связывается с набором данных T a b l e или Q u e r y , длякоторого создается отчет, с помощью свойства D a t a S e t . При этом набор данных Q u e r y может содержать записи, выбранные из разных таблиц. При печатиотчета в процессе выполнения приложения набор данных должен быть открыт.Во время построения отчета можно использовать специально создаваемый набор данных и размещать его на форме, при этом источник данных D a t a S o u r c eне требуется. На практике компонент Q u i c k R e p обычно связывается с набором данных, записи которого отображаются на форме в визуальных компонентах.
В этом случае в отчет попадают записи, удовлетворяющие, например, критерию фильтрации и / и л и сортировки, задаваемому пользователем.Пример. Связывание отчета с набором данных.voidfastcall TForm2::FormCreate(TObject *Sender){QuickRep 1 - > D a t a S e t = F o r m 1 ->Table 1;}находящийся на форме F o r m 2 , при обработке событияэтой формы связывается с набором данных T a b l e 1, расположеннымна форме F o r m l . В файле реализации (исходного кода) модуля формы F o r m 2следует поместить директиву препроцессора #include «Unitl .h» для подключения заголовочного файла модуля формы F o r m 1.ОтчетOnCreateQuickRepl,Часть 3.
Современные СУБД и их применение424Отчет состоит из отдельных полос — составных частей отчета, которыеопределяют содержание и вид созданного документа. Полоса представляетсобой элемент отчета. Каждый элемент размещается на своем месте и предназначен для отображения соответствующих компонентов отчета и выводаданных. Возможный вид отчета при разработке показан на рис.
11.23.(\Г4 Form2Н Н Екниги по программированиюАвторыНазваниеИздательствоLLL-1JГОДJL_lJtotlioSTitleE'ublishingJHoiiseYear*LLL••*_l_i_l±оРис. 11.23. Вид отчета при разработкеКонструирование отчета в основном аналогично конструированию формы. Управлять наличием полос в отчете можно с помощью свойства B a n d sмножественного типа T Q u i c k R e p B a n d s . При разработке приложения включение/отключение полосы выполняется установкой логического значения соответствующего подсвойства свойства B a n d s , например, для полосы областиданных отчета этим подсвойством является H a s D e t a i l .
С помощью этого свойства в простой отчет можно включать следующие полосы:• H a s P a g e H e a d e r — верхний колонтитул;• HasTitle — з а г о л о в о к отчета;• HasColumnHeader — заголовки столбцов;• HasDetail — о б л а с т ь д а н н ы х ;• HasSummary— итог отчета;— нижний колонтитул.Перечисленные полосы можно также вставлять в отчет с помощью компонента полосы Q R B a n d , при этом тип вставляемой полосы устанавливаетсячерез свойство B a n d T y p e этого компонента.Параметры страницы отчета определяет свойство P a g e т и п а Т С Ж Р а д е , через подсвойства которого можно настраивать, например, следующие характеристики:• HasPageFooter/ I.
Borland С++ Builder425• PaperSize — формат страницы (по умолчанию А4);• T o p M a r g i n , B o t t o m M a r g i n , L e f t M a r g i n и R i g h t M a r g i n — размер верхнего, нижнего, левого и правого нолей, соответственно.Единицы измерения страниц, полос, полей, а также других элементов отчета определяет свойство U n i t типа T Q R U n i t s , принимающее, к примеру, следующие значения:• Inches — д ю й м ы ;• ММ — миллиметры (по умолчанию);• C h a r a c t e r s — автоматическая настройка в соответствии с размером символов, установленным свойством QuickRep->Font->Size.При необходимости разработчик может изменить параметры страницы, атакже многие другие параметры отчета (например, шрифт по умолчанию) спомощью Инспектора объектов или в диалоговом окне R e p o r t S e t t i n g ( У с т а н о в к и о т ч е т а ) установки параметров отчета.
Оно вызывается командой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 автоматически устанавливается нужное значение.При создании в отчет нужно включать не более одной полосы каждого вида,гак как при печати отчета «лишние» полосы одного и того же вида учитываться не будут.