告生成器的源代码提供了无限的定制机会。您可以根据需要重新配置当前功能或添加新功能。今天,我们将讲如何在 表设计器的工具箱中添加自己的控件元素。
Fastreport.NET在线购买价优惠,专享85折起!赶紧加入购物清单吧!
FastReport .NET 告生成器提供了广泛的定制机会,即根据您自己的需要进行配置。从用户应用程序代码中,您可以使用 FastReport 库创建自己的 告生成器组件。因此,您可以创建自己的 表设计器及其查看器。
此外,您可以更改 表设计器中的对话窗口,例如,文件保存窗口。
但是, 告生成器的源代码提供了真正的定制机会。您可以根据需要重新配置当前功能或添加新功能。今天,我们将讲如何在 表设计器的工具箱中添加自己的控件元素。
让我们假设您经常在 告中使用具有特定设置的文本对象。使用特定字体或颜色突出显示配置的对象“文本”会很方便,而不是每次都手动设置这些属性。
您只需要创建自己的对象!为此,从现有对象继承对象、扩展其功能或创建新功能就足够了。
要为 表创建自己的组件,您需要 表生成器 FastReport .NET 的源代码。让我们考虑基于 Text 对象创建自己的对象的情况。为此,在 FastReport 项目的根目录中添加一个新类:
public class CustomerTextObject : TextObject { public override void OnBeforeInsert(int flags) { base.OnBeforeInsert(flags); Border.Lines = BorderLines.All; } }
在这个类中,我们在插入对象之前重新定义了事件,我们在其中设置了对象边界的默认值。因此,我们的文本对象从一开始就包含了边界。如果您需要设置对象的任何其他属性 – 没问题。让我们设置颜色:
public override void OnBeforeInsert(int flags) { base.OnBeforeInsert(flags); Border.Lines = BorderLines.All; TextColor = System.Drawing.Color.Gray; }
如果要创建具有自己功能的对象,请从基类 ReportComponentBase 继承。但在这种情况下,除了对象属性和行为之外,您还必须进行渲染——Draw() 方法。然后在其中调用 base.Draw() 并添加对象的绘图。
让我们考虑渲染 Text 对象的示例:
public override void Draw(FRPaintEventArgs e) { base.Draw(e); DrawText(e); DrawMarkers(e); Border.Draw(e, new RectangleF(AbsLeft, AbsTop, Width, Height)); DrawDesign(e); }
创建对象后,您应该注册它,以便它出现在 表设计器的工具箱中。为此,请使用类 AssemblyInitializer.cs 中的 FastReport.Utils.RegisteredObjects.Add() 方法。
注册我们创建的对象的例子:
RegisteredObjects.Add(typeof(CustomerTextObject), “ReportPage”, 120, 1);
所有参数依次为:注册对象的名称、 表页面的对象名称、对象图标的标识符、工具箱中对象的序 。图标存储在资源中。您可以将 bmp 格式的图像添加到资源中或将其直接发送到方法参数而不是图标标识符。
现在您可以编译解决方案并启动 表设计器。工具箱中又出现了一个控件: