Безопасность доступа к данным
На третьем этапе созданное соединение и просмотр можно "защитить". Для этого из списка в диалоговом окне Data Connections (см. рис. 24.4) выбирается объект аутентификации Data Lookup Security Controller. Он сразу же появляется в словаре просмотра данных Data View Dictionary. Остается только подключить его к нужному просмотру. Для этого используется его свойство Dataview, в котором необходимо задать требуемый объект просмотра. Списки имен пользователей и их пароли задаются свойствами UserField и PasswordField соответственно.
Объект аутентификации можно подключить и для использования в отдельном отчете. Для этого применяется свойство securityControl отчета, в котором указывается нужный объект.
Еще один объект — простой объект аутентификации (объект Simple Security Controller в диалоговом окне Data Connections) — в свойстве userList содержит список имен и паролей в формате UserName=Password. Он может использоваться только в отчетах.
Библиотека отчетов
В первую очередь это отчеты, входящие в состав библиотеки отчетов. Каждый из этих отчетов описывает отдельный, самостоятельный отчет. Любой из них может быть загружен в компонент TRvproject для использования в приложениях Delphi. Первый отчет в списке по умолчанию становится текущим. Для смены текущего отчета достаточно дважды щелкнуть на нем в дереве проекта и это состояние будет сохранено при закрытии проекта.
Для того чтобы добавить к проекту новый отчет, можно использовать кнопку на главной панели окна визуальной среды или команду File | New Report главного меню. Для удаления отчета достаточно сделать его текущим и нажать клавишу <Delete>.
Для каждого отчета необходимо заполнить свойства Name и FullName, которые используются для идентификации отчета при работе с ним в Delphi (см. гл. 23). Кроме этого, в свойстве Description полезно заполнить описание отчета и задать единицы измерения, т. к. по умолчанию установлено использование дюймов.
Отчет может содержать произвольное число страниц. Напечатать можно как все страницы, так и их произвольное подмножество. Для разработчика список страниц отчета, которые предлагаются к печати по умолчанию, доступен в свойстве PageList. С этим свойством связан редактор страниц Page List Editor (рис. 24.3), который позволяет выбирать страницы отчета и формировать из них список для печати. При этом одна страница может быть включена в список несколько раз.
Для добавления к текущему отчету новой страницы используйте кнопку на главной панели окна визуальной среды или команду File | New Report Page главного меню. Для удаления выберите страницу и нажмите клавишу <Delete>.
Страница имеет имя, задаваемое свойством Name, а также несколько свойств, задающих ее важнейшие параметры: Orientation, PageSize, PageHeight, PageWidth.
Свойство GotoPage позволяет задать страницу, которая будет напечатана после этой. Порядок печати страниц по умолчанию соответствует их порядку в дереве отчета.
Рис. 24.3. Редактор страниц отчета Page List Editor
Свойство GridLines позволяет задать плотность измерительной сетки, накладываемой на страницу в визуальной среде для удобства размещения элементов оформления.
Графические элементы управления
Графические элементы оформления расположены на странице Drawing Палитры инструментов. Конечно, с их помощью вам не удастся изобразить картину Сальвадора Дали, но для оформления отчетов и рисования таблиц они вполне подойдут.
Это основные три элемента оформления для рисования линий:
HLine — горизонтальная линия; VLine — вертикальная линия; Line — универсальная линия.Все эти элементы имеют идентичный набор свойств, позволяющих задавать параметры и размер линий. Кроме этого, элемент Line позволяет развернуть линию на любой угол. Это можно сделать при помощи мыши.
Элементы оформления square и Rectangle изображают квадрат и прямоугольник соответственно.
Элементы Ellipse и circle изображают эллипс и круг.
Инструментарий визуальной среды создания отчетов
Пользовательский интерфейс визуальной среды создания отчетов Rave Reports во многом напоминает среду разработки Delphi (рис. 24.1). В верхней части окна располагается панель инструментов, состоящая из набора кнопок слева и Палитры инструментов справа. В Палитре инструментов располагаются не только элементы оформления отчетов, но и инструменты для их настройки и управления.
Давайте посмотрим, для чего предназначены закладки Палитры инструментов. Первые четыре содержат элементы оформления отчетов:
Drawing — графические элементы оформления; Ваг Code — различные типы штрихкодов; Standard — элементы оформления, позволяющие размещать на страницах отчета текст и изображения; Report — элементы оформления, предназначенные для отображения данных из внешних источников данных, подключенных к отчету.Остальные закладки содержат инструменты управления и настройки страниц и элементов оформления:
Zoom — управляет увеличением текущей страницы; Colors — позволяет установить цвета элементов оформления и страниц; Lines — задает стиль и толщину линий элементов оформления; Fills — задает стиль заполнения элементов оформления; Fonts — позволяет задать параметры шрифта для текста; Alignment — управляет выравниванием элементов оформления на странице.Центральную часть окна занимает блокнот с двумя закладками.
Рис. 24.1. Закладка Page Designer визуальной среды создания отчетов Rave Reports
Закладка Page Designer содержит еще один блокнот, каждая из страниц которого соответствует одной странице отчета. Когда вы добавляете к отчету новую страницу, здесь появляется еще одна закладка с именем новой страницы. На страницы можно переносить элементы оформления, изменять их размеры и местоположение. На страницу также можно спроектировать измерительную сетку, которая поможет размещать и выравнивать элементы оформления. Обрамляют страницу вертикальная и горизонтальная линейки.
На страницу можно переносить элементы оформления из Палитры инструментов, и затем элементы оформления можно выделять, настраивать их свойства, перемещать и удалять.
Закладка Event Editor обеспечивает создание методов-обработчиков событий для отчетов, страниц, элементов оформления и т. д.
Правую часть окна среды разработки занимает панель проекта отчета. Дерево проекта содержит все его составные части. При двойном щелчке на элементе дерева он отображается на странице в центральной части.
В левой части окна среды разработки располагается аналог Инспектора объектов Delphi, в котором доступны свойства текущего элемента. В нижней части этой панели отображается подсказка для текущего свойства.
Элементы для представления текста и изображений
На странице Standard Палитры инструментов расположены элементы оформления, предназначенные для отображения текста и изображений. Рассмотрим их.
Для представления однострочного текста имеется простой элемент оформления Text. Текст задается свойством Text. Другие стандартные свойства позволяют настраивать шрифт, цвет и т. д. Кроме этого, свойство Rotation позволяет повернуть текст на любой угол в диапазоне от 0 до 360 градусов.
Для представления многострочного текста используется элемент оформления Memo. Текст задается свойством Memo.
Если вам необходимо объединить несколько элементов оформления в группу (например несколько строк текста и изображений в заголовке страницы) и использовать их на странице совместно, применяется невизуальный элемент оформления Section. Размещенные на нем другие элементы как бы оказываются на самостоятельной странице, ограниченной элементом section. Вы можете выделять и перемещать отдельные элементы, но делать это только внутри секции. А при перемещении секции по странице все расположенные на ней элементы также перемещаются вместе с ней. Выравнивание элементов тоже работает по границам секции.
Для представления изображений используется элемент оформления Bitmap. Он позволяет оформлять отчеты изображениями, сохраненными в файлах в формате BMP. Для загрузки изображения используется диалог, открывающийся при щелчке на кнопке свойства image. Также при помощи свойства FileLink можно связать элемент с файлом изображения и при печати отчета оно будет загружено. Кроме этого, изображение можно загрузить из базы данных. Для этого используются свойства Dataview (определяет объект просмотра данных) и DataField (задает поле изображения).
Изображение можно масштабировать. Для этого используется свойство Matchside. При его значениях msHeight, mswidth, msBoth изображение соответственно масштабируется по горизонтали, вертикали или в двух измерениях. Естественно, при этом может произойти искажение изображения. А вот при значении msinside изображение будет масштабировано пропорционально.
Аналогичными свойствами обладает элемент оформления MetaFile. Но изображение в формате WMF загружается в него при помощи свойства FileLink или DataField.
Невизуальный элемент оформления FontMaster позволяет задать единые свойства шрифта для группы элементов оформления. Его свойство Font определяет шрифт. И этот шрифт будет использоваться всеми элементами, в чьих свойствах FontMirror будет указан данный элемент FontMaster.
Невизуальный элемент оформления pageNuminit обеспечивает нумерацию страниц, начиная с той, на которой он расположен. Свойство initvalue задает номер, с которого начинается отсчет нумерации. А при помощи свойств initoataview и initoataFieid можно загрузить это значение из базы данных.
Элементы отображения данных
Элементы отображения данных представляют собой модифицированные стандартные элементы, размещаются на структурных элементах отчета и отображают данные из связанных с ними полей просмотра данных. Они расположены на странице Report Палитры инструментов.
Элемент DataText предназначен для представления строковых или числовых значений полей связанного просмотра данных. Элемент DataMemo используется при необходимости показать данные в формате Memo или BLOB. Элемент calcText обеспечивает выполнение одной из агрегатных функций над значениями связанного поля и представление результата. Тип операции выбирается в свойстве calcType. Невизуальный элемент DataMirrorSection, так же как и его предок Section, объединяет группу других элементов для совместного использования.Кроме перечисленных элементов, еще один элемент способен отображать данные из поля просмотра. Это стандартный элемент оформления Bitmap со страницы Standard Палитры инструментов
Все перечисленные элементы (в том числе и элемент Bitmap) связываются с просмотром данных и полем одинаково.
Свойство Dataview определяет, какой просмотр данных используется элементом. Свойство DataField задает поле просмотра, значения которого будут отображаться элементом.Детально использование компонентов отображения данных рассматривается в гл. 26.
Каталог глобальных страниц
Каталог глобальных страниц объединяет страницы, доступные из любого отчета библиотеки отчетов. Таким образом вы можете оформить все отчеты проекта одинаково. Например, для всех отчетов можно создать глобальные страницы титульного листа, общего заголовка и т. д.
Добавить новую страницу можно при помощи команды главного меню File | New Global Page. После этого страница появляется в списке каталога и доступна для редактирования.
Глобальная страница добавляется в отчет при помощи редактора страниц (см. рис. 24.3). Для этого необходимо выбрать нужную страницу из списка Global Pages и нажать на кнопку Add Global.
Обработка событий
Каждому отчету, странице или элементу оформления можно назначить один или несколько методов-обработчиков событий. Для этого используется Редактор событий Event Editor, доступный через одноименную закладку в центральной части окна визуальной среды Rave Reports.
Для текущего элемента здесь можно выбрать из списка Avaiable Events одно из доступных для обработки событий. При этом будет создан обработчик события, программный код которого вводится в окне редактора внизу. В списке Defined Events отображаются события, обрабатываемые текущим элементом.
Синтаксис кода, используемый для обработки событий, аналогичен синтаксису Object Pascal. При этом можно применять некоторые процедуры и функции Delphi.
Например, в метод-обработчик события BeforePrint элемента оформления Texti можно поместить следующий код:
Textl.Text := IntToStr(StrToInt(Text1.Text) + 1);
который обеспечит нумерацию страниц отчета.
Проверка созданного кода выполняется при нажатии кнопки Compile.
Отображение данных в отчетах
Для представления данных в отчетах предназначены специализированные элементы оформления, представленные на странице Report Палитры инструментов.
Они делятся на две функциональные группы.
В первую группу выделены элементы, обеспечивающие размножение строк в отчете, их заполнение данными, а также группировку при создании сложных отчетов. Эти элементы мы будем называть структурными.
Во второй группе объединены элементы оформления, созданные на основе стандартных и обеспечивающие отображения текущего значения конкретного поля таблицы просмотра.
Проект отчета
Визуальная среда работает с проектом отчета, который создается или загружается из файла с расширением rav. Состав проекта отчета отображается в дереве проекта отчета в панели в правой части окна визуальной среды (рис. 24.2).
Корневой элемент RaveProject содержит три дочерние ветви:
Report Library — библиотека отчетов включает все шаблоны отчетов, содержащиеся в этом проекте;
Рис. 24.2. Дерево проекта отчета
Global Page Catalog — каталог глобальных страниц содержит перечень страниц, не принадлежащих какому-либо из отчетов проекта; Data View Dictionary — словарь просмотров данных содержит созданные соединения с внешними источниками данных.Теперь давайте посмотрим, из каких составных частей может состоять проект отчета.
Визуальная среда Rave Reports позволяет
Визуальная среда Rave Reports позволяет создавать проекты отчетов. Каждый такой проект может содержать несколько отчетов.
Инструментарий визуальной среды позволяет конструировать страницы отчетов из элементов оформления, настраивать их свойства и создавать обработчики событий.
При помощи набора объектов доступа к данным к отчету можно подключить внешний источник данных. При этом можно использовать одну из трех технологий доступа к данным: ADO, dbExpress, BDE. Специализированный редактор предназначен для визуального построения просмотра данных, а набор элементов отображения данных, используя поля созданного просмотра, обеспечивает создание отчетов.
Штрихкоды
На странице Ваг Code разработчику доступны шесть элементов оформления, позволяющие включать в отчеты штрихкоды. Все они реализуют различные стандарты, но значение для кодирования у всех задается одним свойством Text. Элементы PostNetBarCode, I2of5BarCode, UPCBarCode и EANBarCode позволяют вводить только числа, а элементы Code39BarCode и Godei28BarCode могут работать и с буквенно-цифровыми последовательностями.
Код PostNet используется почтовой службой США, содержит код адреса. Перемежающийся код I2of5 служит для представления числовых последовательностей. Перемежающимся назван потому, что цифры в последовательности попеременно кодируются штрихами и пробелами. Код Code39 предназначен для кодирования цифр, заглавных букв латинского алфавита и некоторых других символов. Для представления символа используются пять штрихов и четыре пробела. Код Codel28 позволяет хранить первые 128 символов ASCII. Код UPC (Universal Product Code) может содержать только цифры. Разработан для маркировки продуктов. Код может включать 12 цифр. Код EAN (European Article Numbering system) подобен UPC. Код может включать 13 цифр. Первые две отводятся под код страны-производителя.Для всех элементов значение для кодирования можно загрузить из базы данных при помощи свойства FileLink или DataField.
При необходимости можно рассчитать и напечатать контрольную сумму. Свойство usechecksum при значении True рассчитывает ее, а свойство Printchecksum, будучи установленным в значение True, печатает.
Штрихкод можно развернуть, но только с дискретностью 90°. Для этого используется свойство BarCodeRotation.
Словарь просмотров данных
Словарь просмотра данных объединяет разнообразные объекты доступа к данным. Для создания нового объекта необходимо воспользоваться командой главного меню File | New Data Object. После этого открывается диалог выбора типа объекта Data Connections (рис. 24.4).
Здесь доступны следующие типы объектов:
Data Lookup Security Controller — организует аутентификацию пользователя по имени и паролю при использовании одного из просмотра данных;
Рис. 24.4. Диалог выбора типа объекта доступа к данным Data Connections
Database Connection — создает соединение с внешним источником данных на основе одной из трех технологий доступа к данным: ADO, BDE, db Express; Direct Data View — создает просмотр данных на основе активного соединения с источником данных; Driver Data View — создает просмотр данных на основе ранее созданного в словаре соединения; Simple Security Controller — представляет собой список пользователей, который может быть использован для организации доступа в отдельных отчетах.Созданные в словаре объекты являются глобальными для всего проекта и доступны на любой странице любого отчета. Мы познакомимся с ними более подробно дальше в этой главе.
Соединение с источником данных и просмотры
В первую очередь необходимо создать соединение с источником данных. Для этого в диалоге (см. рис. 24.4) необходимо выбрать объект соединения Database Connection и, после нажатия кнопки Next, в следующем окне выбрать одну из трех возможных технологий доступа к данным: ADO, dbExpress, BDE. В зависимости от сделанного выбора настраиваются параметры соединения. Подробнее о технологиях доступа к данным рассказывается в главах части IV.
После завершения настройки готовое соединение появляется в списке Data View Dictionary.
На втором этапе к работающему соединению можно подключать объекты просмотра данных. В диалоге Data Connections (см. рис. 24.4) надо выбрать тип объекта доступа к данным Driver Data View и нажать на кнопку Next. Затем в следующем окне нужно выбрать одно из существующих соединений (см. выше). После этого появляется диалог Query Advanced Designer (рис. 24.5).
Рис. 24.5. Диалог Query Advanced Designer, позволяющий настроить объект просмотра данных
В этом диалоговом окне нужно выбрать из списка доступных таблиц источника данных необходимые и задать требуемые соотношения между полями. Страница Layout двухстраничного диалога позволяет выбирать таблицы. Нужная таблица выбирается из списка Tables в правой части и перетаскивается в левую часть, где каждая таблица представляется в виде списка полей. Необходимые поля также можно выбирать для будущего использования. Перетаскиванием полей между таблицами можно задавать внешние ключи.
Страница Sorting & Gouping позволяет выбрать поля для сортировки и группировки. Здесь в списке слева представлены выбранные ранее таблицы и поля. Поля можно переносить в список Sort Fields справа. Поля в этом списке будут использованы для сортировки наборов данных. А из полей для сортировки можно выбрать поле для группировки. Для этого используется список Group By.
При нажатии на кнопку Editor появляется редактор с текстом запроса SQL, реализующий все сделанные ранее настройки. При необходимости его можно исправить вручную.
После завершения настройки просмотра новый объект просмотра появляется в словаре просмотра данных Data View Dictionary и может использоваться в отчетах.
Созданный запрос просмотра доступен через его свойство Query.
Стандартные элементы оформления и их свойства
Теперь остановимся подробнее на элементах оформления отчетов. Они используются так же, как и компоненты в Delphi. Выбранный элемент переносится из Палитры инструментов на страницу отчета. Здесь его можно разместить в нужном месте, изменить его размеры и настроить свойства. Свойства элемента оформления доступны на панели слева. Кроме этого, наиболее важные визуальные свойства (цвет, стиль линий и заполнения и т. д.) вынесены на Палитру инструментов.
После переноса на страницу имя элемента оформления также появляется в дереве проекта.
Структурные элементы отчета
Рассмотрим структурные элементы.
Основой отчета, использующего просмотры баз данных, является элемент Region. Он создает в отчете область, предназначенную для размещения любых других элементов и определяющую часть страницы отчета, отведенную под отображение данных. Он обладает одним интересным свойством Columns, которое задает число колонок, в которых будет печататься отчет.
При создании отчета, использующего базу данных, этот элемент переносится на страницу в первую очередь. Затем приходит очередь элементов Band и DataBand.
Элемент Band создает полосу, на которой можно располагать стандартные элементы оформления. Он служит для оформления заголовков, сносок, врезок и других статичных фрагментов оформления отчетов, которые не изменяются при печати просмотра данных.
Элемент DataBand создает полосу, моделирующую строку просмотра данных. На ней располагаются элементы отображения данных, которые будут рассмотрены ниже. При печати отчета для каждой строки печатается новый экземпляр полосы элемента DataBand со всеми расположенными на ней элементами оформления. Таким образом и получается отчет, отображающий строка за строкой весь просмотр данных.
Важнейшее свойство Bandstyle определяет роль и поведение полосы в отчете. С ним связано диалоговое окно Band Style Editor (рис. 24.6), которое отображает взаимосвязь полос в области Region отчета и позволяет задать поведение текущей полосы.
В левой части диалога отображается список всех полос отчета с их взаимосвязями (отношениями "один-ко-многим", группировкой, вложенностью и т. д.), текущая полоса выделяется жирным шрифтом с подчеркиванием. Имя каждой полосы отображается трижды. И это не ошибка разработчиков, а желание показать, что каждая полоса размножается для печати записей просмотра данных.
Рис. 24.6. Редактор полос отчета Band Style Editor
Группа флажков Print Location в правой части диалогового окна определяет назначение полосы. А группа Print Occurrence задает, в каком месте отчета появляется полоса:
Body Header (В) — заголовок отчета, печатается в начале отчета; Group Header (G) — заголовок группы, печатается в начале группы записей, объединенных в просмотре данных выражением GROUP BY; Row Header (R) — заголовок записи, печатается в начале каждой записи просмотра данных; Detail (D) — печатается в начале подчиненного набора записей, входящего в отношение "один-ко-многим"; Row Footer (r) — окончание строки, печатается в конце каждой записи просмотра данных; Group Footer (g) — окончание группы, печатается в конце группы записей, объединенных в просмотре данных выражением GROUP BY; Body Footer (r) — окончание отчета, печатается в конце отчета; First (1) — печатается один раз в начале отчета (титул отчета); New Page (P) — печатается в начале каждой страницы отчета; New Column (С) — печатается в начале каждой колонки отчета. Примечание
Для каждого из перечисленных выше типов в скобках указан символ, который используется для обозначения типа полосы на странице отчета в визуальной среде Rave Reports (рис. 24.7). Таким образом, по совокупности символов разработчик может оценить роль той или иной полосы в отчете, не обращаясь к редактору.
Рис. 24.7. Элементы Band, DataBand и Region на странице отчета
Другие свойства полос и способы создания простых и сложных отчетов рассматриваются в гл. 26.
Визуальная среда создания отчетов
Визуальная среда создания отчетов входит в состав генератора отчетов Rave Reports 5.0. В отличие от генератора отчетов Quick Report, который поставлялся с Delphi 6 и более ранними версиями, визуальная среда в Rave Reports значительно облегчает самый трудоемкий этап в процессе создания отчета и его включения в состав приложения — постраничную разработку шаблона отчета.
Под шаблоном отчета мы подразумеваем совокупность страниц отчета с расположенными на них графическими и текстовыми элементами оформления, а также свойствами и правилами создания отчета, сохраненными в файле с расширением rav.
Каждый файл RAV может включать несколько независимых шаблонов отчетов. Затем эти шаблоны используются в компонентах TRvProject и служат основой для создания и печати отчетов в приложении.
Кроме этого, средствами визуальной среды шаблон отчета может быть подключен к различным источникам данных. При этом могут использоваться следующие технологии доступа к данным:
ADO; dbExpress; BDE.Визуальная среда Rave Reports открывается из меню Tools | Rave Designer
главного окна Delphi или при двойном щелчке на компоненте TRvProject. Исполняемый файл Rave.exe расположен в папке Delphi7\Rave5.
Подводя итог сказанному, мы можем выделить несколько основных задач, которые можно решать в визуальной среде создания отчетов:
загрузка, редактирование и сохранение шаблонов отчетов в файлах RAV; создание структуры отчета и определение его основных свойств; разработка страниц отчета; подключение к отчету источников данных и использование этих данных при оформлении страниц отчетов; генерация отчета на основе созданного шаблона, его предварительный просмотр или печать.В этой главе рассматриваются следующие вопросы:
составные части визуальной среды и инструментарий создания отчетов; структура шаблона отчета; текстовые и графические элементы оформления страниц отчетов; как использовать методы-обработчики событий; какие источники данных доступны в отчетах, как их подключить и использовать при оформлении страниц.Внешние источники данных в отчете
Все объекты, обеспечивающие доступ к внешним источникам данных из отчетов проекта, собраны в словаре просмотра данных Data View Dictionary. Новый объект создается командой File | New Data Object главного меню.