Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лабораторная работа № 8
СОЗДАНИЕ ОТЧЕТНЫХ ФОРМ В DELPHI
Цель
Результаты работы системы необходимо распечатать на принтере или хранить в виде файла. Для этой цели создается отчетная форма. Создание отчетной формы и организация отчета процедура, несколько отличающая от процедуры создания экранной формы, поэтому эти материалы рассмотрим в отдельной главе. Возможны различные варианты создания отчетов с предварительным отображением на экране: - отображение таблицы на экране, а затем выбор записи из нее для отчета; - отображение отчета на экране с выбранной строки; - отображение отчета.
5.1. Компоненты для построения отчетов В Delphi 3 на странице палитры компонентов QReport расположено около двух десятков компонентов, применяемых для построения отчетов. " Главным" компонентом, несомненно, является TQuickRep, определяющий поведение отчета в целом. Другие компоненты определяют составные части отчета: · TQRBand – заготовка для расположения данных, заголовков, титула отчета и др.; отчет, в основном, строится из компонентов TQRBand, которые реализуют: - область заголовка отчета; - область заголовка страницы; - область заголовка группы; - область названий столбцов отчета; - область детальных данных, предназначенную для отображения данных самого нижнего уровня детализации; - область подвала группы; - область подвала страницы; - область подвала отчета. · TQRSubDetail - определяет область, в которой располагаются данные подчиненной таблицы при реализации в отчете связи Master-Detail н основе существующей связи между ТБД; · TQRGroup - применяется для группировок данных в отчете; · TQRLabel - позволяет разместить в отчете статический текст; · TQRDBText - позволяет разместить в отчете содержимое поля набора данных; · TQRExpr - применяется для вывода значений, являющихся результатом вычисления выражений; алгоритм вычисления выражений строится припомощи редактора формул данного компонента; · TQRSysDate - служит для вывода в отчете даты, времени, номера страницы, счетчика повторений какого-либо значения и т.д.; · TQRMemo - служит для вывода в отчете содержимого полей комментарии · TQRRichText - служит для вывода в отчете содержимого полей форматированных комментариев; · TQRDBRich Text - служит для вывода в отчете содержимого полей форматированных комментариев, источником которых является поле набора данных; · TQRShape - служит для вывода в отчете графических фигур, например, прямоугольников; · TQRImage - служит для вывода в отчете графической информации, источником которой является поле набора данных; · TQRChart - служит для встраивания в отчет графиков.
Компонент TQuickRep Компонент TQuickRep определяет поведение и характеристики отчета в целом. При размещении этого компонента форме в ней появляется сетка отчета (рис. 38). В дальнейшем в этой сетке располагаются составные части отчета, например, группы TQRBand (рис. 39). Перечислим важнейшие свойства, методы и события компонента TQuickRep. Свойства property Bands: TQuickRepBands; состоит из множества логических значений (False/True), которые определяют включение в отчет отдельных видов составляющих: · HasColumnHeader - заголовка столбцов отчета; · HasDetail - детальной информации; · HasPageFooter - подвала страницы; · HasPageHeader - заголовка страницы; · HasSummary - подвала отчета; · HasTille - заголовка отчета.
Рис.38. Пустая сетка отчета. Образуется после размещения в форме компонента TQuickRep
Рис.39. Сетка отчета с размещенными в ней компонентами отчета
property DataSet: TDataSet; указывает на набор данных, на основе которого и создается отчет. Обычно для выдачи отчета используется один НД. Если нужно вывести связанную информацию из нескольких таблиц БД, ее объединяют в одном НД при помощи оператора SELECT. В этом случае в качестве НД для отчета может использоваться компонент TQuery. Информацию из нескольких связанных НД можно включать в отчет, если эти наборы данных связаны в приложении отношением Master-Detail. В этом случае в качестве НД отчета указывается Master-набор, а ссылка на соответствующие Detail-наборы осуществляется в компонентах TQRSubDetail. Если в отчет нужно включить информацию из несвязанных наборов данных применяют композитный отчет, то есть отчет, составленный из группы других отчетов. property Frame: TQRFrame; определяет параметры рамки отчета: · Color - цвет линии рамки; · DrawBottom - определяет, следует ли выводить линию снизу; · DrawLeft- определяет, следует ли выводить линию слева; · DrawRight- определяет, следует ли выводить линию справа; · DrawTop- определяет, следует ли выводить линию сверху; · Style - определяет стиль линии; · Width • определяет ширину линии в пикселях. property Page: TQRPage; определяет параметры страницы. property PrinterSettings: TQuickRepPrinterSettings; определяет параметры принтера. property PrintIfEmpty: Boolean; указывает (True), что следует печатать отчет даже в том случае, если он несодержит данных. Методы procedure NewPage; Выполняет переход на новую страницу. Может использоваться в обработчиках событий компонентов отчета BeforePrint или AfterPrint и не может - в обработчиках событий OnPrint, OnStartPage и OnEndPage. procedure Preview; выводит отчет в окно предварительного просмотра. Чтобы во время разработки отчета просмотреть в окне предварительного просмотра содержимое отчета в том виде, как он будет выводиться на печать, необходимо: - выбрать отчет при помощи мыши; - нажать правую кнопку мыши; - во всплывающем меню выбрать элемент Preview. Следует заметить, что при этом не будут видны некоторые данные, например, значения вычисляемых полей наборов данных. Они будут выводиться только во время выполнения. procedure Print; печатает отчет на принтере. procedure PrinterSetup; обеспечивает установки параметров принтера. События property AfterPreview: TQRAfterPreviewEvent; наступает после закрытия окна предварительного просмотра отчета. property AfterPrint: TQRAfterPrintEvent; наступает после вывода отчета на печать. property BeforePrint: TQRBeforePrintEvent; наступает в момент генерации отчета, до выдачи окна предварительного просмотра отчета и до вывода отчета на печать. property OnEndPage: procedure(Sender: TObject); наступает в момент подготовки к генерации последней страницы отчета property OnStartPage: procedure(Sender: TObject); наступает в момент подготовки к генерации первой страницы отчета. Компонент TQRBand Компоненты TQRBand являются основными составными частями отчета и используются для размещения в них статического текста и данных.Месторасположение компонента в отчете и его поведение определяются свойством property BandType: TQRBandType; Ниже перечислены возможные значения этого свойства. · rbTitle - определяет компонент заголовка отчета. Информация, размещенная в компоненте TQRBand, располагается перед всеми другими частями отчета. Этот вид компонента TQRBand используется для bi заголовочной информации отчета. · rbPageHeader - определяет компонент заголовка страницы. Информация, размещенная в компоненте с этим значением свойства Band выводится всякий раз при печати новой страницы отчета прежде всех иных частей отчета (но после информации, размещенной в компоненте заголовка отчета - для первой страницы). · rbDetail - компонент детальной информации. Выводится всякий раз при переходе на новую запись в НД отчета. Отчет печатается для всех записейНД, определяемого свойством отчета DataSet, начиная с первой и заканчивая последней. Позиционирование на первую запись и последовательный перебор записей в НД осуществляется компонентом TQuickRep автоматически. · rbPageFooter - компонент подвала страницы. Выводится для каждой страницы отчета после всех иных данных на странице. · rbSummary - компонент подвала отчета. Выводится на пост странице отчета после всей иной информации, но перед под последней страницы отчета. · rbGroupHeader - компонент заголовка группы. Применяется при группировках информации в отчете. Выводится всякий раз при выводе новой группы. · rbGroupFooter - компонент подвала группы. Применяется при группировках информации в отчете. Выводится всякий раз при окончании вывода группы, после всех данных группы. · rbSubDetail - компонент для выдачи детальной информации из подчиненного набора данных, при выводе в отчете информации из двух или более наборов данных, связанных в приложении при помощи механизма Master-Detail. Это значение присваивается компоненту автоматически, когда генерируется компонент TQRBand при размещении в форме компонента TQRSubDetail. Программа не должна устанавливать это значение в свойство BandType. · rbColumnHeader - компонент для размещения заголовков столбцов. Размещается в отчете на каждой странице после заголовка страницы. · rbOverlay - используется для совместимости с более ранними версиями отчетов. Свойство property Enabled: Boolean; указывает, печатается в отчете (True) или нет (False) информация, содержащаяся в компоненте TQRBand. Свойство property ForceNewPage: Boolean; указывает, должна ли информация в составе TQRBand всегда печататься с новой страницы (True) или нет (False). Событие property BeforePrint: TQRBeforePrintEvent; наступает перед печатью информации, размещенной в области компонента TQRBand.
5.2. Создание простейшего отчета Компоненты TQuickRep и TQRBand являются минимально достаточными для создания простого отчета, не содержащего внутри себя группировок информации. Таблица БД Prihod.DB содержит сведения о поступлении материалов на склада. В состав ТБД входят поля - N_Prih - уникальный номер события прихода материала; - DataPrih – дата поступления; - MATERIAL - наименование материала; - KOLVO - количество единиц поступившего материала. Создадим простейший отчет, состоящий из заголовка и сведений о поступлении материала. В отчет включаются все факты поступления материала. Сортировка производится по номеру события поступления материала. Разместим в форме №6 компонент TTable (имя Table1), свяжем с таблицей БД Prihod.DB и откроем его (Active = True). Разместим в форме компонент TQuickRep (имя QuickRep1) из страницы QReportпалитры компонентов. Установим в свойство DataSet отчета значение Table1, назначив, таким образом, отчету набор данных, записи из которого будут выводиться в отчет. Добавим в отчет компонент TQRBand (имя QRBand1). Свойство BandType компонента QRBandl по умолчанию установлено значение rbTitle, то есть компонент QRBand1 определяет заголовок отчета. Разместим в пространстве отчета, занимаемом компонентом QRBand1, компонент TQRLabel (статический текст) с именем QRLabel1. Установим свойство Caption этого компонента значение 'Поступление материалов на склад', установим в свойстве Font жирный наклонный шрифт высотой 16 пунктов. Вид отчета показан на рис. 40.
Рис.40. В отчете определен только его заголовок
Теперь разместим в отчете данные, соответствующие текущей записи таблицы Prihod. Для этого поместим в отчет новый компонент TQRBand (имя QRBand2) и установим в его свойство BandType значение rbDetail. Затем разместим в группе четыре компонента TQRDBText с именами QRDBText1... QRDBText4. Свяжем данные компоненты соответственно с полями НД - N_Prih, MATERIAL, DataPrih, KOLVO. Для этого в свойство DataSet каждого компонента QRDBText установим значение Table1, а в свойство DataField - значение имени соответствующего поля. Вид отчета показан на pис. 41.
Рис.41. Отчет с заголовком и группой детальной информации
Для просмотра получившегося отчета щелкнем по нему правой кнопкой мыши и из всплывающего меню выберем элемент Preview. Получим окно предварительного просмотра отчета (рис. 42).
Рис.42. Содержимое отчета в окне предварительного просмотра
Вызов окна предварительного просмотра организуем при нажатии на кнопку “Просмотр” из формы №4. Для этого добавим в форму №4 компонент TButton. Изменим заголовок этой кнопки (свойство Caption), используя инспектор объектов, на “Просмотр”. Определим для кнопки обработчик события нажатия кнопки, OnClick: Form6. QuickRep1.Preview;
|