彩票走势图

FastReport VCL开发人员手册:FastReport 类层次结构

翻译|使用教程|编辑:杨鹏连|2021-06-28 09:42:34.010|阅读 184 次

概述:FastReport VCL它提供了可视化模板设计器,可以访问 30 多种格式,并可以部署到云、网站、电子邮件和打印中。本文介绍了FastReport VCL报表类层次结构。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

FastReport VCL是用于 Delphi、C++ Builder、RAD Studio 和 Lazarus 的报告和文档创建 VCL 库。它提供了可视化模板设计器,可以访问 30 多种格式,并可以部署到云、网站、电子邮件和打印中。

立即点击下载FastReport VCL v6.9最新版

FastReport VCL开发人员手册:FastReport 类层次结构

TfrxComponent是所有 FastReport 组件的基类。这种类型的对象具有参数,例如坐标、大小、字体、可见性和从属对象的列表。此类还包含允许在流中保存/恢复对象状态的方法。

  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 – 如果“True”,则使用父对象字体设置;
  • 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 – canvas;
  • Scale – 按 X 轴和 Y 轴缩放;
  • Offset - 相对于画布边缘偏移。
BeforePrint方法在对象处理之前(在报告构建过程中)被调用。此方法保存对象状态。
GetData 调用方法将数据加载到对象中。
AfterPrint在对象处理后调用。此方法恢复对象状态。
TfrxDialogComponent class 是编写非可视化组件的基础类,可以放在报表中的对话形式。
  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;

在编写您自己的自定义控件元素时,您应该从此类继承,将所需的属性转移到“已发布”部分,然后为您的公共控件指定新属性。控制元素的编写将在下一章详细讨论。

TfrxViewclass 是大多数组件的基本类,可以放在报表设计页面上。这种类型的对象具有框架和填充等参数,也可以连接到数据源。大多数 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如果DataSet和DataField属性包含非空值,则返回“True” 。
调用BeginDraw方法后可以参考以下属性:
  • FX, FY, FX1, FY1, FDX, FDY,FFrameWidth是根据Scale和Offset参数计算的对象框坐标、大小和宽度;
  • FScaleX,FScaleY是尺度,它们是Draw方法中 ScaleX 和 ScaleY 参数的副本;
  • FCanvas是画布,它是Draw方法中 Canvas 参数的副本。
在此类中定义了以下属性,这些属性对于大多数报表对象是通用的:
  • BrushStyle – 对象填充样式;
  • Color – 对象填充颜色;
  • DataField - 数据字段名称,连接到哪个对象;
  • DataSet - 数据源;
  • Frame – 对象框架;
  • Align - 对象相对于其父对象对齐;
  • Printable – 定义是否应打印给定对象;
  • ShiftMode 当可拉伸对象放置在给定对象上时,是对象移动模式;
  • TagStr - 用户信息存储字段。
TfrxStretcheable class 是编写组件的基本类,它根据放置在其中的数据修改它们的高度。
  TfrxStretcheable = class(TfrxView)
  public
    function CalcHeight: Extended; virtual;
    function DrawPart: Extended; virtual;
    procedure InitPart; virtual;
  published
    property StretchMode: TfrxStretchMode;
  end;
给定类的对象可以被拉伸,也可以在对象在输出页面上找不到空间的情况下“分解”成碎片。同时,对象被零散地显示,直到显示其所有数据。
此类中定义了以下方法:
  • CalcHeight 是根据放置在其中的数据计算并返回对象高度;
  • InitPart 在对象拆分之前调用;
  • DrawPart重绘放置在对象中的下一个数据块。“返回值”是无法显示数据的未使用空间的值。

如果您对FastReport感兴趣,欢迎加入FastReport QQ 交流群:702295239

还想要更多吗?您可以点击阅读【FastReport报表2021最新资源盘点】查找需要的教程资源。上是FastReport .NET正在慧都网火热销售中!>>查看价格详情


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP