Search Results for

    Show / Hide Table of Contents

    Иерархия классов FastReport

    Базовым классом для всех компонентов 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 - должен отрисовать очередную порцию данных, которые помещаются в объекте. Возвращаемое значение - это величина неиспользованного пространства, на котором не удалось вывести данные.

    Back to top © 1998-2024 Copyright ООО «Быстрые отчеты»