Иерархия классов FastReport |
Top Previous Next |
Базовым классом для всех компонентов FastReport является класс TfrxComponent. Объекты этого типа имеют координаты, размеры, шрифт, признак видимости, а также список подчиненных объектов. Класс также содержит методы для сохранения/восстановления состояния объекта в поток.
TfrxComponent = class(TComponent) protected procedure SetParent(AParent: TfrxComponent); virtual; procedure SetLeft(Value: Extended); virtual; procedure SetTop(Value: Extended); virtual; procedure SetWidth(Value: Extended); virtual; procedure SetHeight(Value: Extended); virtual; procedure SetFont(Value: TFont); virtual; procedure SetParentFont(Value: Boolean); virtual; procedure SetVisible(Value: Boolean); virtual; procedure FontChanged(Sender: TObject); virtual; public constructor Create(AOwner: TComponent); override; procedure Assign(Source: TPersistent); override; procedure Clear; virtual; procedure CreateUniqueName; procedure LoadFromStream(Stream: TStream); virtual; procedure SaveToStream(Stream: TStream); virtual; procedure SetBounds(ALeft, ATop, AWidth, AHeight: Extended); function FindObject(const AName: String): TfrxComponent; class function GetDescription: String; virtual;
property Objects: TList readonly; property AllObjects: TList readonly; property Parent: TfrxComponent; property Page: TfrxPage readonly; property Report: TfrxReport readonly; property IsDesigning: Boolean; property IsLoading: Boolean; property IsPrinting: Boolean; property BaseName: String;
property Left: Extended; property Top: Extended; property Width: Extended; property Height: Extended; property AbsLeft: Extended readonly; property AbsTop: Extended readonly;
property Font: TFont; property ParentFont: Boolean; property Restrictions: TfrxRestrictions; property Visible: Boolean; end;
- Clear - очищает содержимое объекта и удаляет все его дочерние объекты. - CreateUniqueName - создает уникальное имя для объекта, который помещен в отчет. - LoadFromStream - считывает содержимое объекта и всех его дочерних объектов из потока. - SaveToStream - сохраняет объект в поток. - SetBounds - устанавливает координаты и размеры объекта. - FindObject - ищет объект с заданным именем среди дочерних объектов. - GetDescription - возвращает описание объекта.
Следующие методы вызываются при изменении соответствующих свойств. Вы можете перекрыть их, если вам нужна дополнительная обработка:
- SetParent - SetLeft - SetTop - SetWidth - SetHeight - SetFont - SetParentFont - SetVisible - FontChanged
В классе TfrxComponent определены следующие свойства:
- Objects - список дочерних объектов; - AllObjects - список всех подчиненных объектов; - Parent - ссылка на родительский объект; - Page - ссылка на страницу отчета, которой принадлежит объект; - Report - ссылка на отчет, которому принадлежит объект; - IsDesigning - истина, если запущен дизайнер; - IsLoading - истина, если объект в процессе загрузки из потока; - IsPrinting - истина, если объект печатается на принтере; - BaseName - базовое имя объекта. Это значение используется в методе CreateUniqueName, который добавляет к базовому имени первую свободную цифру; - Left - координата X объекта (относительно родителя); - Top - координата Y объекта (относительно родителя); - Width - ширина объекта; - Height - высота объекта; - AbsLeft - абсолютная координата X объекта; - AbsTop - абсолютная координата Y объекта; - Font - шрифт объекта; - ParentFont - если истина, то использовать установки шрифта родительского объекта; - Restrictions - набор флагов, запрещающих те или иные действия над объектом; - Visible - видимость объекта.
Следующий основной класс - TfrxReportComponent. Объекты этого типа могут быть помещены в отчет. Класс содержит метод Draw для отрисовки объекта, а также методы BeforePrint/GetData/AfterPrint, которые вызываются при запуске отчета.
TfrxReportComponent = class(TfrxComponent) public procedure Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended); virtual; abstract; procedure BeforePrint; virtual; procedure GetData; virtual; procedure AfterPrint; virtual; function GetComponentText: String; virtual; property OnAfterPrint: TfrxNotifyEvent; property OnBeforePrint: TfrxNotifyEvent; end;
- Draw - вызывается при отрисовке объекта. Параметры: Canvas - холст; Scale - масштаб по осям X,Y; Offset - смещение относительно начала холста; - BeforePrint - вызывается перед обработкой объекта (в процессе построения отчета). Этот метод должен сохранить состояние объекта; - GetData - метод должен загрузить данные в объект; - AfterPrint - вызывается после того, как объект обработан. Метод должен восстановить состояние объекта.
Класс TfrxDialogComponent является базовым для написания невизуальных компонентов, которые могут быть помещены на диалоговую форму в отчете.
TfrxDialogComponent = class(TfrxReportComponent) public property Bitmap: TBitmap; property Component: TComponent; published property Left; property Top; end;
Класс TfrxDialogControl является базовым для написания элементов управления, которые могут быть помещены на диалоговую форму в отчете. Класс содержит большое количество свойств и событий, общих для большинства элементов управления.
TfrxDialogControl = class(TfrxReportComponent) protected procedure InitControl(AControl: TControl); public property Caption: String; property Color: TColor; property Control: TControl; property OnClick: TfrxNotifyEvent; property OnDblClick: TfrxNotifyEvent; property OnEnter: TfrxNotifyEvent; property OnExit: TfrxNotifyEvent; property OnKeyDown: TfrxKeyEvent; property OnKeyPress: TfrxKeyPressEvent; property OnKeyUp: TfrxKeyEvent; property OnMouseDown: TfrxMouseEvent; property OnMouseMove: TfrxMouseMoveEvent; property OnMouseUp: TfrxMouseEvent; published property Left; property Top; property Width; property Height; property Font; property ParentFont; property Enabled: Boolean; property Visible; end;
При написании своего элемента управления вам надо наследоваться от этого класса, перенести нужные свойства в раздел published и добавить новые свойства, специфичные для вашего элемента управления. Написание собственных элементов управления будет рассмотрено более подробно в соответствующей главе.
Класс TfrxView является базовым для большинства компонентов, которые могут быть размещены на странице отчета. Объект этого типа имеет рамку и заливку, может подключаться к источнику данных. Практически все стандартные объекты FastReport наследуются от данного класса.
TfrxView = class(TfrxReportComponent) protected FX, FY, FX1, FY1, FDX, FDY, FFrameWidth: Integer; FScaleX, FScaleY: Extended; FCanvas: TCanvas; procedure BeginDraw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended); virtual; procedure DrawBackground; procedure DrawFrame; procedure DrawLine(x, y, x1, y1, w: Integer); public function IsDataField: Boolean; property BrushStyle: TBrushStyle; property Color: TColor; property DataField: String; property DataSet: TfrxDataSet; property Frame: TfrxFrame; published property Align: TfrxAlign; property Printable: Boolean; property ShiftMode: TfrxShiftMode; property TagStr: String; property Left; property Top; property Width; property Height; property Restrictions; property Visible; property OnAfterPrint; property OnBeforePrint; end;
В классе определены следующие методы:
- BeginDraw - метод вызывается из метода Draw и вычисляет целочисленные координаты и размеры области отрисовки. Вычисленные значения помещаются в переменные FX, FY, FX1, FY1, FDX, FDY. Также вычисляется толщина рамки (помещается в FFrameWidth); - DrawBackground - отрисовка фона объекта; - DrawFrame - отрисовка рамки объекта; - DrawLine - вспомогательный метод, рисующий линию с заданными координатами и толщиной; - IsDataField - возвращает True, если св-ва DataSet, DataField содержат непустые значения.
К следующим свойствам можно обращаться после вызова метода BeginDraw:
- FX, FY, FX1, FY1, FDX, FDY, FFrameWidth - координаты, размеры и толщина рамки объекта, вычисленные с учетом масштабирования и смещения; - FScaleX, FScaleY - масштаб, копия параметров ScaleX, ScaleY из метода Draw; - FCanvas - холст, копия параметра Canvas из метода Draw.
В классе определены следующие свойства, общие для большинства объектов отчета:
- BrushStyle - стиль заливки объекта; - Color - цвет заливки объекта; - DataField - имя поля данных, к которому подключен объект; - DataSet - источник данных; - Frame - рамка объекта; - Align - выравнивание объекта относительно его родителя; - Printable - определяет, надо ли печатать данный объект на принтере; - ShiftMode - режим смещения объекта в случае, когда над данным объектом расположен растягиваемый объект; - TagStr - вспомогательное поле для хранения различной информации.
Класс TfrxStretcheable является базовым для написания компонентов, которые могут менять свою высоту в зависимости от находящихся в них данных.
TfrxStretcheable = class(TfrxView) public function CalcHeight: Extended; virtual; function DrawPart: Extended; virtual; procedure InitPart; virtual; published property StretchMode: TfrxStretchMode; end;
Объекты данного класса могут не только растягиваться. Они также могут быть "разорваны" на части в случае, когда объект не помещается на страницу целиком. При этом объект выводится по частям до тех пор, пока все его данные не будут выведены.
В классе определены следующие методы:
- CalcHeight - должен вычислить и вернуть высоту объекта с учетом хранящихся в нем данных; - InitPart - вызывается перед началом разбиения объекта; - DrawPart - должен отрисовать очередную порцию данных, которые помещаются в объекте. Возвращаемое значение - это величина неиспользованного пространства, на котором не удалось вывести данные. |