Книги, научные публикации Pages:     | 1 |   ...   | 3 | 4 | 5 |

Содержание Предисловие 1 ЧАСТЬ I. ОСНОВНЫЕ СРЕДСТВА DELPHI 3 Глава 1. Среда Delphi 5 1.1. ...

-- [ Страница 5 ] --

Пример. Процедура, в которой осуществляется управление печатью полосы.

procedure TfmReport.DetailBandlBeforePrint(Sender: TQRCustomBand;

var PrintBand: Boolean) ;

begin PrintBand := Form2.Tablel.FieldByName('Salary').AsFloat > 3000;

end;

В отчете печатаются только записи, имеющие в поле salary значение больше 3000.

11.1.3. Компоненты, размещаемые на полосе После создания полосы определенного типа в ней размешаются соответст вующие компоненты, при этом необходимо использовать только компонен 270 Delphi. Быстрый старт ты страницы QReport (Быстрый отчет). Размещение на полосе других ком понентов, например, Label или Edit, не вызывает ошибки трансляции, но в сформированный отчет такие компоненты не попадают.

Можно разместить компонент отчета и вне полосы Ч непосредственно на компоненте-отчете QuickRep. В этом случае он будет выводиться на каждой странице отчета (например, компонент QRimage, содержащий логотип фирмы).

Обычно используются следующие компоненты отчета.

Х QRLabei Ч надпись, содержащая текст (аналог надписи Label), которая может размещаться на любой полосе, но для полос данных обычно не используется.

П QRDBText Ч значение поля записи (аналог компонента DBText);

обычно размещается в полосе данных.

Х QRExpr Ч значение, формируемое на основе выражения, в котором могут использоваться значения полей записей;

обычно используется для полос данных и нижних колонтитулов.

Х QRSysData Ч системная информация, обычно используемая для итоговых полос и полос колонтитулов;

ее вид определяется свойством Data типа TQRSysDataType, у которого можно выделить следующие значения:

Х qrsDateTime Ч текущие дата и время;

Х qrsPageNumber Ч номер текущей страницы;

Х qrsPageCount Ч общее число страниц в отчете.

Х QRimage Ч графический образ, загружаемый аналогично графическому образу image (может быть использован в любой полосе, но обычно не размещается в полосах данных);

с помощью компонента QRimage вы водится, например, логотип организации;

кроме того, следует отличать этот компонент и от компонента QRDBimage, который обычно размещает ся в полосе данных и отображает рисунок из поля таблицы.

Х QRShape Ч геометрическая фигура, размещаемая в любой полосе.

Перед компонентом QRSysData может находиться надпись, которая ука зывается в свойстве Text типа s t r i n g. Например, для значения qrsPageNumber в качестве надписи подойдет текст Страница. По умолча нию надпись отсутствует.

Компонент QRShape позволяет оформить сетку вокруг выводимых данных.

Для этого в полосу помещается компонент QRShape, имеющий форму прямоугольника, а сверху него располагается текстовый элемент. Прямо угольники будут образовывать рамки сетки, для чего соседние по вертикали и горизонтали прямоугольники выравниваются так, чтобы их стороны сов падали. Если для образования сетки использовать рамку самих текстовых элементов, то необходимо учитывать, что эта рамка выводится непосредст венно вокруг текста, и при стыковке соседних элементов будет отсутство Часть II. Работа с базами данных вать межстрочный интервал. Другой вариант создания сетки Ч образование ее из горизонтальных линий рамки полос и вертикальных линий рамки.

Однако в этом случае вертикальные линии не будут сплошными.

Выравниванием текста внутри компонентов, содержащих текст, управляет СВОЙСТВО A l i g n m e n t. К ТаКИМ К о м п о н е н т а м ОТНОСЯТСЯ, Н а п р и м е р, QRLabel и QRDBText. По умолчанию текст выравнивается по левому краю. При необ ходимости это значение можно изменить, установив, например, для поля даты выравнивание по центру (tacenter), а для поля цены Ч выравнивание ПО правому Краю (taRightJustify).

Возможностью автоматического изменения размеров содержащего текст компонента по размеру этого текста управляет свойство AutoSize. По умол чанию размер текстового компонента автоматически подстраивается под содержащийся в нем текст, так как свойство AutoSize имеет значение True.

Это может привести к нарушению выравнивания столбцов отчета. Если компоненты отчета, в первую очередь элементы полосы данных, имеют рамку, то размеры этих компонентов должны быть постоянными. В таком случае свойству AutoSize устанавливается значение False.

Параметры шрифта устанавливаются через свойство Font отдельных компо нентов. Для изменения шрифта сразу у всех компонентов удобно использо вать свойство Font компонента QuickRep и свойство ParentFont компонен тов отчета, управляющее возможностью наследовать параметры шрифта от родительского компонента. В нашем случае родительским компонентом яв ляется отчет QuickRep. По умолчанию свойство ParentFont каждого компо нента отчета имеет значение True, и при изменении шрифта отчета автома тически изменяется шрифт всех его элементов.

Замечание Если для какого-либо компонента изменяются параметры шрифта, то его свой ству ParentFont присваивается значение False.

Для оформления рамки вокруг отдельного элемента отчета используется свойст во Frame, управляющее наличием рамки, цветом, стилем и толщиной линий.

Многие компоненты отчета имеют событие onPrint типа TQRLabelonPrintEvent, возникающее непосредственно перед печатью ком понента. Тип этого события описан как type TQRLabelonPrintEvent = procedure (Sender: TObject;

Var Value: String) of Object;

Параметр value обработчика события содержит значение, которое должно быть напечатано. Это значение можно изменить или отформатировать.

272 Delphi. Быстрый старт Действие обработчика события onPrint распространяется только на отчет и не затрагивает значения записей, находящихся в наборе данных.

Пример. Форматирование значений при печати.

procedure TfmReport.QRDBText3Print(Sender: TObject;

var Value: String);

begin Value := Value + '%';

end;

Компонент QRDBText3 связан с числовым полем. При печати значения этого поля выводятся со знаком процента.

Обработчик события OnPrint можно использовать, например, для улучше ния выравнивания компонентов при использовании вокруг них вертикаль ных рамок. Так, при выравнивании текста компонента QRDBText вправо (его свойство Alignment имеет значение taRightJustify) возможно наползание текста на правую линию рамки. В этом случае для улучшения читаемости текста он передвигается на несколько пробелов влево путем добавления в обработчик события строки кода:

Value := Value + ' ';

Аналогично можно поступить с текстом, выравниваемым по левой границе.

При необходимости в обработчике события OnPrint выполняется и более сложное форматирование данных.

( Замечание ^ Событие O n P r i n t генерируется также при вызове метода Preview, но не воз никает при просмотре отчета на этапе разработки приложения.

11.2. Простой отчет Простой отчет представляет собой отчет на основе данных из одного набора данных и содержит сведения, которые выводятся в табличном виде без дополнительных условий, например, группирования данных.

Размещение и вид печатаемых в отчете данных аналогичны размещению и виду данных, отображаемых в сетке DBGrid. Отличием является то, что данные отчета размещаются не на форме, а на бумажном документе, и их нельзя редактировать.

Рассмотрим действия, выполняемые при подготовке простого отчета, на примере списка персонала (рис. 11.4). Многие из этих действий использу ются и при разработке отчетов других видов. Для создания простого отчета требуется:

Часть II. Работа с базами данных П разместить на форме компонент QuickRep;

Х создать для компонента QuickRep требуемые полосы отчета;

Х разместить в полосах нужные компоненты отчета, чаще всего QRLabei, QRDBText И QRExpr;

Х создать для какого-либо события, например, нажатия кнопки с заголов ком Печать, обработчик, в котором вызывается метод печати или предва рительного просмотра отчета.

11|" Форма простого отчета r 30.04.200f Список персонала jP[ I Фамилия'. [Должность 'Оклад! Йата рождения r P_Name. ^ДPositiqn [P_Salary ^Birthday, |Всего сотрудников -] з {Начальник отдела кадров А. Вавилов] Рис. 11.4. Вид простого отчета на этапе разработки Размещение на форме компонента отчета, установка параметров отчета, а также создание обработчика события нажатия кнопки печати рассмотрены при описании компонента QuickRep выше в этой главе.

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

Х верхний колонтитул (rbPageHeader);

Х заголовок отчета (rbTitie);

Х заголовки столбцов (rbColumnHeader);

П Данные ( r b D e t a i l ) ;

О ИТОГ отчета (rbSummary);

П НИЖНИЙ КОЛОНТИТУЛ (rbPageFooter).

На этапе разработки название каждой полосы выводится серым цветом в ее левом нижнем углу.

Можно добавить к проекту шаблон простого отчета, выбрав в Хранилище объектов объект QuickReport List (Лист отчета), который находится на стра нице Forms (Формы).

Delphi. Быстрый старт 11.2.1. Заголовок отчета Заголовок отчета выводится один раз на первой странице сразу под верхним колонтитулом, если он есть. В полосе заголовка обычно размещаются надписи QRLabei, содержащие требуемый текст (как правило, в качестве за головка выводится название всего отчета). При необходимости в заголовке можно разместить, например, сведения о названии, адресе и телефоне организации, а также логотип. В приведенном на рис. 11.4 примере в полосе заголовка находятся название отчета и логотип организации. Для вывода названия отчета используется компонент QRiabel, в котором набран текст Список персонала. Для названия установлен полужирный курсивный шрифт размером 20 пт. Логотип загружается в компонент QRimage. Для шрифта других компонентов рассматриваемого отчета с помощью свойства Font компонента QuickRep установлен размер 12 пт.

11.2.2. Заголовки столбцов и данные Полосы заголовков столбцов и данных являются основными полосами, в которых размещаются компоненты, обеспечивающие табличный вывод содер жимого набора данных. Заголовки столбцов выводятся на каждом листе отчета.

Для заголовков столбцов данных в полосу заголовков обычно помещаются ком поненты QRiabel, в которые заносится текст, соответствующий полям данных.

Для вывода значений полей записей в полосу данных обычно помещаются компоненты QRDBText и QRExpr. Более простым является использование компонентов QRDBText, каждый из которых отображает значение связанного с ним поля. Имя набора данных указывается в свойстве DataSet, а имя поля задается в свойстве DataFiieid.

На этапе разработки в отчете присутствует только одна полоса данных, но при формировании отчета отдельная полоса данных будет выведена для каждой за писи отчета. Напомним, что если набор данньгх является пустым и не содержит записей, то область данных не выводится. Чтобы для пустого набора данных были выведены остальные полосы (кроме полос данных), свойству PrintifEmpty компонента QuickRep устанавливается значение True (по умолчанию).

Компонент QRExpr позволяет вставлять в отчет значение выражения, рас считываемого обычно с участием различных полей записей. Выражение за носится в свойство Expression типа string, для формирования которого удобно использовать окно Expression Wizard (Мастер выражений), вызывае мый через Инспектор объектов.

При разработке приложения такие компоненты отчета, как QRiabel, QRDBText и QRExpr, имеют одинаковый внешний вид.

Часть II. Работа с базами данных 11.2.3. Итоговая полоса Итоговая полоса отчета выводится один раз в конце отчета сразу после по лосы данных. В этой полосе обычно стоят либо итоговые сведения отчета, например, средние и максимальные значения по данным какого-либо поля, либо должность и фамилия лица, утверждающего отчет. В итоговой полосе обычно размещаются компоненты: QRiabei Ч для вывода надписей и QRExpr Ч для вывода значений выражений.

Замечание Если итоговая полоса не помещается на текущей странице целиком, то она от деляется от последней полосы данных и переносится на другую страницу, что не соответствует правилам делопроизводства.

В выражении для итогового компонента QRExpr часто используются сле дующие статистические функции:

Х SUM Ч сумма значений;

Х MIN Ч минимальное значение;

П МАХ Ч максимальное значение;

Х AVERAGE Ч среднее значение;

П COUNT Ч число записей набора данных.

Для всех функций, кроме COUNT, В скобках нужно указывать имя поля, для которого выполняется расчет. Для вывода числа записей набора данных также можно использовать компонент QRSysData со значением qrsDetailCount свойства Data.

В приведенном на рис. 11.4 примере в качестве итога выводится число за писей (совместно с поясняющей надписью всего сотрудников -) и началь ник, утверждающий документ.

11.2.4. Колонтитулы Колонтитулы печатаются в начале и конце каждой страницы, в них обычно выводятся сведения о дате, времени печати, а также номер страницы. Для этого в полосах колонтитулов чаще всего размещаются компоненты QRSysData, которым устанавливается требуемое значение свойства Data.

В приведенном примере отчета полоса каждого колонтитула содержит один компонент QRSysData, отображающий:

П дату Ч для верхнего колонтитула;

Х номер страницы Ч для нижнего колонтитула;

чтобы перед номером страницы выводился поясняющий текст, свойству Text присвоено значение лист.

В полосе колонтитула можно также разместить и другие компоненты, например, QRLabel для вывода на каждой странице названия организации.

Предметный указатель DBNavigatorl Delete Active 128, 193 Destroy ActiveControl 129 DFM 10, Add 153 DLL Additional 68 DOF Append 248 DPR AppendRecord 248 DragCursor Assig 203 DragMode AutoEdit В Enabled Bands 263 EXE BDE 159, 174 Execute 143, Beforelnsert BitBtn BtnClick Button Field Filter FilterOptions FindField CanModify Flat Close 122, Font Code Form Color FormStyle Commit Frame ConfirmDelete Free Create Cursor GroupBox Database Desktop DatabaseName H DataSourcel DB 178 Height DBGrid 213 HelpContext DBGridl 188 Hide DBNavigator 222 Hint Предметный указатель PopupMenu 77, I Position IDE 5 Post IndexFieldNames 199, 251 Preview IndexName 199, 228, 250 PrinterSetting Insert 154, 247 PrintlfEmpty InsertRecord ixDescending QR QRBand Left QRDBText Load From File 88 QRExpr Locate 237 QRlabel QRShape M Query QuickReport MainMenu MaskEdit MasterFields MasterSource Readonly 78, Memo RecNo MessageDlg 140, Refresh Release N RequestLive Name 21 RES Number 164 RichEdit Rollback Object Pascal OnActivate 122 SaveDialog OnCellClick 215 SaveToFile OnCloseQuery 123 ScrollBox OnCreate 121 ScrollInView OnDeActivate 122 SetFocus OnDrawColumnCell 215 Show OnKeyPress 82 ShowMessage OnNewRecord 249 ShowProgress OnPaint 122 Size OnResize 125 Standard OnShow 122 StartTransaction OnTitleClick 215 String Open OpenDialog Options 214, Table Table 1 TableName 198, Page TableType PAS 10, Предметный указатель TabOrder TCloseQuery Event Value TColorCircle VCL 65 Text 77, Visible 209. См.

TForm VisibleButtons TFormStyle TMenuItem Top 76 W TPosition Width TStrings Win32 TWinControl Динамическое создание компонентов Алфавит 31 Добавление пункта меню Архитектура "клиент-сервер" 160 Доступ к:

данным 2, 190, полю 197, База данных локальная реляционная 160 Заголовок отчета Банк данных 157 Задание индекса Библиотека визуальных компонентов Запись 65, 70 добавление Бизнес-правила 170 редактирование табличный вид В текущая удаление Визуальные компоненты, методы Запрос SQL Встроенный отладчик Выбор имени файла 145 И Выражения Идентификаторы арифметические Изменение:

логические данных 199, строковые поля связи структуры таблицы Имя:

индекса Главная таблица индекса Главное меню 148, поля 180, Главный индекс 163, таблицы Группа Индекс Индексные поля д Инструментальные средства Интегрированная среда Деструктор разработки Динамическое поле Предметный указатель Интерфейс приложения Источник данных 2 Область прокрутки Итоговая полоса Обозреватель проекта Объект поля К Объекты Каскадное удаление 168 Объявление констант Классы 60 Объявление переменных Ключ 163, 181, 200 Ограничения:

Ключевые поля 163, 200 базы данных Кнопка 105 на значения полей с рисунком 108 Однострочный редактор стандартная 105 Окно:

Колонтитул 275 Инспектора объектов Комбинированный список 100 Конструктора формы Комментарий 36 Проводника кода Компоненты: Редактора кода визуальные для работы Оконный элемент управления сданными 211 Оператор 37, доступа к данным 190 выбора отчета 270 вызова процедуры Конструктор 64 доступа меню 152 перехода Контейнер 115 присваивания Контекстное меню 151 пустой составной Л структурированный цикла Логическая таблица Операции с выделенным текстом М Описание полей таблицы Организация взаимодействия Массивы Меню 148 форм Метод 63 Открытие файла Отношение подчиненности Механизм транзакций Отчет Многострочный редактор параметры страницы Множества предварительный просмотр Модели баз данных Н П Набор данных 190, 198, 200 Палитра компонентов модификация 239 Панель редактируемый 204 Параметры:

Навигатор 222 индекса Навигационный способ проекта доступа 192 Пароль Навигация по набору данных 228 Первичный индекс Надпись 89 Первичный ключ 280 Предметный указатель Состояние набора Переключатель данных с зависимой фиксацией Сохранение файла с независимой фиксацией 11:

Список Подпрограмма Способ доступа к данным параметры и аргументы Справочная система Подчиненная таблица Среда Delphi 5, 31, 67, 85, 105, 119, Поиск записей 148, 157, 190, 225, по индексным полям Ссылочная целостность по полям Стандартные диалоги Поле 161 Статическое поле набора данных Строки Полоса отчета Полоса прокрутки Поля Права доступа Префиксы названий Таблица компонентов 178 Текущий индекс Приложения баз данных 158 Тип:

Простой отчет 272 полосы отчета Простой список 98 поля 180, Процедуры 56 таблицы 171, Псевдоним 186 Тип данных Пункт меню 148 вещественный интервальный литеральный логический Размер поля простой Разработка приложения структурный Редактор полей целочисленный Режим набора данных 195, Транзакция 169. Реляционный способ доступа Удаление пункта меню Указатель текущей Свойства 63, записи Связи между таблицами Условный оператор Связывание таблиц Сетка Система управления базой Ф данных Файл:

События 64, модулей Создание:

проекта приложения ресурсов таблицы Фильтр Сообщения Фильтрация Сортировка набора по выражению данных Флажок ПО Состав проекта Предметный указатель Форма 2 119 Функции закрытие 123 Функциональность приложения изменение размеров модальная отображение и скрытие Хранилище объектов создание экземпляра. См.

уничтожение 123 Ш управление видимостью Шаблоны форм управление состоянием Формат таблиц:

Я dBase Paradox Языковой драйвер ВЕСЬ МИР компьютерных книг Более 1600 наименований книг в И Н Т Е Р Н Е Т - М А Г А З И Н Е www.computerbook.ru Х Я ComputeiBQOK.ru - Miciosofl Internet Exploiei Х Драека. ' - f i * f ДОрмт,.Сервис Справка "Q Х -. Ш л - Остановить Обновить Домой Назад- Snepef- Почта Г) онск И збрзккое Журнал hftp //www cornputeibook fa' i-сылкн ^JJobListfu Результат поиска вакансий @ @ Mail.ru Бесплатная почта | расширенный п о и с к - - > > а г, схраинца.лахгая Х К а к купить книгу Х Прайс-лист Сшцкалшкрогашшй кктернет-пигихск ко мгаю тер но л M i c r o s o f t Office XP Х Новинки в целом питератури Compnieibookro предзмгает большой Х Готовятся к печати набор книг компьютер не'й тематики V Расширенный поиск На данный н в м е н т жахавос Х ТОР 2 Х Э л е к т р о н н ы е книги Х когдачество книг: Х ИОПИЧЙСТВО электронных книг: Х Обзоры КОПКЧЙСТЯО кокикок: Х Главная страница Издательство "БХВ-Санкт Штербург" Нашим Ефрененко!

Справочник Web-мастера. XML Издатеистто "БХВ-Санкт Петербург" Copyright йcomputeifaook.т. Pages:     | 1 |   ...   | 3 | 4 | 5 |    Книги, научные публикации