49634 (Засоби виводу інформації на принтер в об’єктно-орієнтованому середовищі програмування Delphi), страница 2
Описание файла
Документ из архива "Засоби виводу інформації на принтер в об’єктно-орієнтованому середовищі програмування Delphi", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49634"
Текст 2 страницы из документа "49634"
Метод NewPage забезпечує вивід інформації на наступній сторінці звіту.
Метод Prepare готує звіт для виводу у файл. Вивід звіту у файл виробляється в наступному порядку. Спочатку звіт підготовляється шляхом виклику методу Prepare, потім зберігається у файлі методом Save об'єкта QRPrinter, після чого цей об'єкт знищується і властивості QRPrinter присвоюється значення NIL. Це робиться, як показано нижче.
QuickRep1.Prepare;
QuickRep1.QRPrinter.Save('Report.QRP');
QuickRep1.QRPrinter.Free;
QuickRep1. QRPrinter := NIL;
Метод Print друкує звіт на принтері.
Метод PrintBackground дозволяє роздрукувати звіт у фоновому режимі. Після завершення друку викликається оброблювач події OnAfterPrint.
Метод Preview виводить стандартне вікно попереднього перегляду (див. мал. 3).
Метод PrinterSetup викликає стандартне вікно встановлення параметрів принтера.
Компонент ORBand. У даному розділі варто також згадати про найважливіші властивості компонента QRBand, тому що дані компоненти є основними складовими частинами звіту. Отже, розглянемо кілька специфічних властивостей компонента QRBand.
Властивість AlignToBottom (тип Boolean), що має значення True, вказує на те, що смуга буде розташовуватися безпосередньо над підсторінкою, у той час як звичайно вона розташовується праворуч або знизу від попередньої смуги.
Властивість BandType (тип TQRBandType) визначає призначення смуги і може приймати одне з таких значень:
-
rbTitle - друкується на першій сторінці звіту і, як правило, містить його назву;
-
rbPageHeader - друкується вгорі кожної сторінки і містить її заголовок;
-
rbDetail - містить інформацію з набору даних і автоматично повторюється для кожного запису, починаючи з першої і закінчуючи останньою;
-
rbPageFooter - зберігає підсторінку і виводиться внизу кожної сторінки:
-
rbSummary - являє собою підзвіт і виводиться в його кінці;
-
rbSubDetail - містить детальну інформацію з підлеглого набору даних у випадку зв'язку між кількома таблицями БД;
-
rbColuimHeader - являє собою заголовки стовпців і розміщається на кожній сторінці звіту після заголовка сторінки;
-
rbGroupFooter - зберігає підгрупу, застосовується при угрупованнях інформації в звіті і виводиться наприкінці кожної групи;
-
rbGroupHeader - містить заголовок групи і виводиться на початку кожної групи;
-
rbOverlay - використовується для зворотної сумісності з попередніми версіями QuickReport. He рекомендується використовувати даний тип без особливих на те основ;
-
rbChild - резервується для використання компонентів QRChildBand. Даний тип не слід установлювати вручну.
Властивість Enabled (тип Boolean) дозволяє друкувати смуги, якщо має значення True.
Властивість ForceNewColumn (тип Boolean), встановлене в True, вказує на те, що смуга буде друкуватися в наступному стовпчику.
Властивість ForceNewPage (тип Boolean), встановлене в True, указує, що смуга буде друкуватися на новій сторінці.
Властивість HasChild (тип Boolean) визначає, чи буде дана смуга мати дочірню смугу. Якщо цій властивості привласнити значення True, то в звіті буде автоматично створена дочірня смуга.
При виводі інформації на принтер в середовищі Delphi використовуються ще компоненти PrintDialog та PrintSetupDialog.
Компонент PrintSetupDialog призначений для на лаштування параметрів принтера, не має особливих властивостей, тому що ці параметри суттєво відрізняються для різних видів принтерів. На основі цього компонента можна створювати свої власні компоненти для окремих принтерів.
Компонент PrintDialog відображає стандартне вікно друку Windows. В ньому мона задати різні параметри друку, які визначаються наступними властивостями:
Властивість | Значення |
Collate | Маркер. Розібрати по копіях |
Copies | Число копій |
FromPage | Номер сторінки з якої починається друк |
MaxPage | Максимальне число сторінок, яке може бути надруковане |
MinPage | Мінімальне число сторінок, яке може бути надруковане |
Options | Другорядні параметри налаштування |
PrintRange | Вигляд сторінок документу, що друкується. Можливі значення: prAllPages(всі сторінки); prSelection(сторінки вибраного фрагменту); prPageNums(сторінки з діапазону FromPage/ToPage) |
PrintToFile | Має значення True, якщо вивід має здійснюватись не на принтер, а у файл |
ToPage | Номер сторінки на якому закінчується друк |
1.2. Створення звітів за допомогою Quick Reports.
Створення найпростішого звіту не представляє особливих проблем. Для цього достатнім є використання тільки компонентів QuickRep і QRBand.
Створення найпростішого звіту. Розглянемо побудову простого звіту на невеликому прикладі.
Приклад. Нехай є таблиця students.db, у якій зберігаються дані про студентів інституту. У цій таблиці представлені такі поля: Номер студентського квитка (Nom_stud), Прізвище, ім'я, по батькові (Fio). Група (Grup). Потрібно створити найпростіший звіт, що містить заголовок і зведення з зазначеної таблиці БД.
Спочатку на форму поміщається компонент Table, що зв'язується з таблицею students.db. Таблиця відкривається, тобто властивості Active цього компонента привласнюється значення True. На форму поміщається компонент QuickRep. і його властивості DataSet встановлюється значення Tablel. У звіт додається компонент QRBand. При цьому його властивість BandType по замовчуванню має необхідне значення, а саме - rbTitle, тобто цей компонент буде містити заголовок звіту. Зверху на смугу заголовка поміщається компонент QRLabel, властивості Caption якого задається значення, що визначає заголовок звіту (наприклад, "Список студентів"). Крім того, при бажанні можна змінити шрифт, яким буде виводитися заголовок звіту. Це робиться за допомогою зміни значення властивості Font. Після цього в звіт додається ще один компонент QRBand. і його властивості BandType встановлюється значення rbDetail. У цій смузі буде відображатися вміст таблиці students.db. Потім на дану смугу поміщаються три компоненти QRDBText, що зв'язуються з полями таблиці БД - Norn stud. Fio, Grup. Для цього властивості DataSet кожного компонента QRDBText задається значення Tablel, а властивості DataField присвоюється ім'я відповідного поля.
Переглянути отриманий звіт, можна, клацнувши по ньому правою кнопкою миші і вибравши пункт Preview в відкритому контекстному меню. Зразковий вид вікна попереднього перегляду даного звіту показаний на мал. 5.
Якщо необхідно, щоб вікно попереднього перегляду відкривалося при створенні форми, досить створити такий оброблювач події OnCreate даної форми:
procedure TForml.FormCreate(Sender: TObject);
begin
QuickRepl.Preview;
end;
Для того щоб при закритті вікна попереднього перегляду закривалася і форма, на якій розташований звіт, можна використовувати такий оброблювач події OnAf terPreview компонента QuickRep:
procedure TForml.QuickRep1AfterPreview (Sender: TObject);
begin
Forml.Close;
end;
У результаті створення двох приведених оброблювачів подій може бути отримане найпростіший додаток, що забезпечує можливість перегляду і друку сформованого звіту.
Включення виражень у звіт. Для того щоб включити в звіт дані, одержувані в результаті обчислення деякого виразу, використовується компонент QRExpr . Вираз формуються за допомогою спеціального редактора, що викликається у вікні Інспектора об'єктів кнопкою у поле даних властивостей Expression вищевказаного компонента (див. мал. 6).
Вираз вводиться і редагується в поле Enter expression даного редактора. Вираз може складатися з імен полів, змінних, числових значень, функцій перетворення, арифметичних і логічних операцій, а також операторів порівняння. Імена полів додаються у вираження за допомогою допоміжного вікна, що викликається натисканням кнопки Database field, функції - за допомогою вікна, що відкривається при натисканні кнопки Function, а змінні - натисканням кнопки Variable. Також за допомогою відповідних кнопок додаються логічні, арифметичні оператори й оператори порівняння.
Розглянемо приклад складання виразу з наступним виводом результату його виконання в звіті. Нехай є таблиця shop.db, що містить найменування товарів, що є в магазині (поле Tovar), і його вартість (поле Price). Припустимо, що ціна товарів виражена в доларах США. Потрібно представити ціну в гривнях, з огляду на те, що курс дорівнює 5,35 гривень за один долар США. Крім цього, необхідно, щоб у звіті відображалася грошова величина, у якій виражена ціна товару. Таким чином, потрібно перетворити чисельне значення вартості товару до строкового типу, після чого до отриманого рядка додати під рядок “грн.”. Реалізувати це можна в такий спосіб. Після того як у звіт доданий компонент QRExpr, варто відкрити вікно редактора формул.
Спочатку в редакторі необхідно натиснути кнопку Function. У лівому списку вікна, що відкрився при цьому, потрібно вибрати категорію Other, а потім у правому списку - функцію STR, що перетворить числове значення в строкове. Після цього варто натиснути кнопку Continue, щоб перейти до введення параметрів функції. У результаті відкриється спеціальне вікно введення параметрів (див. мал. 7).
Параметр можна ввести безпосередньо в поле одно строкового редактора або натиснути кнопку , розташовану праворуч від поля введення. Після натискання даної кнопки на екрані з'явиться початкове вікно редактора формул. Тому що, відповідно до поставленої задачі, необхідно буде перетворювати в рядок значення поля таблиці БД, то для задання його як параметра даної функції варто натиснути кнопку Database field і вибрати поле Price у списку полів таблиці Tablel. Тепер потрібно натиснути кнопку ОК, щоб вставити поле, потім ОК, щоб закрити вікно редактора формул, і ще раз ОК, щоб завершити введення параметра. У поле Enter expression буде сформована частина формули, що має вид:
STR( Tablel. Price)
Перш ніж перетворити значення поля Price до строкового виду, його необхідно помножити на 5.35, щоб представити ціну не в доларах, а в гривнях. З цією метою курсор встановлюється в позицію безпосередньо після імені Price, потім на панелі Insert at cursor position натискається кнопка «*» і вручну вводиться значення 5.35.
Після цього залишилося тільки додати вказівку грошової одиниці. Для цього курсор переводиться в кінцеву позицію, натискається кнопка «+» і вручну вводиться підрядок “ грн. ”. У результаті сформована формула здобуває такий вид:
STR(Tablel.Price*5.35)+ ' грн.'
У вікні попереднього перегляду звіту буде відображатися інформація приблизно на кшталт показане на мал. 8.
У цьому звіті відображається найменування товару, потім вміст поля Price у первісному вигляді і, нарешті, перелічена за допомогою компонента QRExpr вартість товару. Ціна виводиться двічі, щоб проілюструвати різницю між початковим і перетвореним значенням.
Відображення системної інформації. Для відображення допоміжної і системної інформації використовується компонент QRSysData . Вид відображуваної інформації визначається значенням властивості Data даного компонента. Ця властивість може приймати одне з таких значень:
-
qrsColumnNo - номер поточного стовпчика звіту:
-
qrsDate - поточна дата;
-
qrsDataTinie - поточна дата і час;
qrsDetaiICount - кількість записів у наборі даних; при використанні декількох наборів даних - кількість записів у головному наборі. Якщо набір даних представлений компонентом Query, ця можливість може бути недоступна, що зв'язано з характером роботи даного компонента, що повертає стільки записів, скільки необхідно для використання в даний момент часу;
-
qrsDetailNo - номер поточного запису в наборі даних;
-
qrsPageNumber - номер поточної сторінки звіту;
-
qrsPageCount - загальна кількість сторінок звіту;
-
qrsReportTitle - заголовок звіту;
-
qrsTime - поточний час.
Компонент QRSysData, як правило, розміщається в заголовку або підсторінці звіту.
Групування даних у звіті. Для групування даних використовується компонент QRGroup . Умова групування зберігається у властивості Expression, інакше кажучи, у групу будуть входити записи набору даних, що задовольняють встановленій умові. Роль такої умови виконує ім'я поля набору даних, на основі якого буде здійснюватися групування записів. Для кожної групи виводиться її заголовок. Як заголовок групи використовується компонент QRGroup, а як під компонент QRBand зі значенням властивості BandType, рівним rbGroupFooter. При цьому властивість FooterBand компонента QRGroup повинне обов'язково містити посилання на компонент підгрупи. Як правило, у заголовку групи виводиться вираження, що групує, а в підзаголовку - різна інформація, така як, наприклад, сумарне або середнє значення по групі в цілому.
Важливою умовою є те, що угрупування буде здійснюватися тільки на основі поточного індексу. Іншими словами, необхідно, щоб як поточний індекс був використаний індекс, побудований за полем (або полями, у випадку створення вкладених груп даних), що використовується для групування записів у звіті.