* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Расширение QuickReport
19 февраля 2009

Насчет дополнений к QuickReport
QuickReport разработан с учетом возможности расширения с помощью нескольких различных путей. Дополнения (Add-ons) доступны как от QSD, так и от других производителей. В дополнение вы также можете написать свое собственное дополнение. Данная глава описывает написание четырех различных типов дополнений для QuickReport.
Печатные компоненты
Несмотря на то, что QuickReport включает достаточное количество печатных компонент, может быть ситуация когда потребуются некоторые дополнительные.
Все печатные компоненты для QuickReport должны быть наследниками TQRPrintable. Вы может создать наследника напрямую или использовать существующий компонент. Создание компонента состоит из следующих шагов:
• Создание компонента с базовой функциональностью
• Обеспечение доступности компонента в дизайнере
• Добавление функциональности по экспорту
Фильтры экспорта
В дополнение к ASCII текст фильтру экспорта, включенному в состав QuickReport, вы можете создать свои фильтры в другие форматы, например Microsoft Excel, Word, RTF или другие. QuickReport все необходимое для создания дополнительных фильтров.
Библиотеки функций
Интерпретатор выражений QuickReport также расширяется с помощью библиотек функций, какие вам только могут потребоваться. Математические функции, нижнего уровня доступа к файлам, специальные форматы баз данных не поддержанные в Delphi модели Dataset, расширенные строковые функции, манипулирование датами. QuickReport включает необходимые классы для простого написания своих собственных библиотек. Однажды встроив, вы можете их использовать в своих выражениях, как внутри QuickReport, так и в других частях вашего приложения используя интерпретатор выражений QuickReport.
Редакторы отчетов
Редактор отчетов конечного пользователя включенный в QuickReport может быть заменен своим собственным. В основном QuickReport использует три уровня редактирования для конечного пользователя. Путем использования встроенного не визуального класса TQRDesigner вы можете создать свой собственный визуальный редактор без использования сообщений Windows, вызовов API и программирования нижнего уровня. Сам редактор TQREditor, из QuickReport построен из всего 200 строк кода.
Написание печатных компонент
Вероятно, наиболее полезной функцией QuickReport является возможность создания своих собственных печатных компонент. QuickReport не требует знать, как печатать. Он знает, что печатать – это TQRPrintable базовый класс. Вся работа по печати осуществляется субклассами от TQRPrintable.
Все печатные компоненты в QuickReport разработаны данным образом. Печатный компонент наследует некоторые свойства из базового класса и может добавить свои собственные.
Пример компонента CheckBox
В качестве примера выберем CheckBox компонент, в котором добавим свойство Checked. Это требует переписать метод Paint (для редактора отчетов) и метод Print (для просмотра и печати). В методах Paint и Print мы должны рисовать CheckBox и значок отметки в зависимости от состояния свойства Checked. Исходный текст компонента приведен ниже:
unit qrcb;

interface

uses
classes,
quickrp;

type
TQRCheckBox = class(TQRPrintable)
private
FChecked: Boolean;
procedure SetChecked(Value:Boolean);
public
constructor Create(AOwner: TComponent); override;
procedure Paint; override;
procedure Print(OfsX, OfsY: Integer); override;
published
Property Checked: Boolean
read FChecked write SetChecked;
end;
procedure Register;
implementation

constructor TQRCheckBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FChecked := False;
end;
procedure TQRCheckBox.SetChecked(Value: Boolean);
begin
if Value <> FChecked then begin
FChecked := Value;
Invalidate;
end;
end;
procedure TQRCheckBox.Paint;
begin
with Canvas do begin
Pen.Color := clBlack;
Pen.Width := 1;
Rectangle(0, 0, Width - 1, Height - 1);
if Checked then begin
MoveTo(0, 0);
LineTo(Width - 1, Height - 1);
MoveTo(0, Height - 1);
LineTo(Width - 1, 0);
end;
end;
end;
procedure TQRCheckBox.Print(OfsX, OfsY: Integer);
var
CalcLeft, CalcTop, CalcRight, CalcBottom : Longint;
begin
with ParentReport.QRPrinter do begin
Canvas.Pen.Color := clBlack;
Canvas.Pen.Width := 1;
CalcLeft := XPos(OfsX + Size.Left);
CalcTop := YPos(OfsY + Size.Top);
CalcRight := XPos(OfsX + Size.Left + Size.Width)
CalcBottom := YPos(OfsY + Size.Top + Size.Height)
Canvas.Rectangle(Left, Top, Right, Bottom);
if Checked then begin
MoveTo(Left, Top);
LineTo(Right, Bottom);
MoveTo(Left, Bottom);
LineTo(Right, Top);
end;
end;
end;
procedure Register;
begin
RegisterComponents(‘QReport’, [TQRCheckBox]);
end;
Компоненты, работающие с базами данных
Написание компонент работающих с базами данных является смесью обычных печатных компонент и стандартных и обычных Delphi компонент баз данных. Следует только учесть, что в QuickReport стандартной связью с базой данных является не DataSource, а DataSet. Вероятно вы пожелаете зарегистрировать специальный редактор свойств для вашего свойства типа FieldName, имитируя функциональность редактора свойств Delphi для свойства FieldName, со свойством DataSource – список всех полей данного DataSet. Подобный редактор реализован в модуле QREPORT.


Теги: Borland Delphi

Статьи по теме:

Панель Custom
Свойство Shape
Форматирование вывода
ППП общего назначения
Разметка, единицы измерения и масштаб
Устройства обработки данных
ТЕХНОЛОГИЧЕСКИЙ ПРОЦЕСС ОБРАБОТКИ И ЗАЩИТЫ ДАННЫХ
Data Marts
Zap
Гипертекстовые и мультимедийные информационные технологии
Свойство Data
Выбор шрифта
Передача данных при использовании TCP
Признаки автоматизированных рабочих мест. Классификация автоматизированных рабочих мест
FilePathFull
| Borland Delphi | ext |
 


Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | Borland Delphi | Расширение QuickReport. Регион сайта: Москва и Санкт-Петербург