报表生成器FastReport .Net程序员手册:如何替换 “打开 “和 “保存 “对话框

在本章中,我们将学习FastReport中使用报表的原则。我们还将仔细介绍配置FastReport.Net对话框。

Fastreport.NET在线购买价更低,专享85折起!赶紧加入购物清单吧!

替换 “打开 “和 “保存 “对话框

如果您决定将报表存储在数据库中,您可能需要改变设计器,使其能够从/向数据库打开和保存报表。也就是说,你需要用你自己的对话框来代替标准的 “打开 “和 “保存 “对话框。要做到这一点,请使用EnvironmentSettings组件(见上一节)。该组件有以下事件。

CustomOpenDialog 

发生在报表设计器即将显示 “打开 “对话框时。在事件处理程序中,您必须显示一个对话框窗口以允许用户选择一个报表文件。如果对话框成功执行,必须返回e.Cancel = false,并将e.FileName设置为所选文件名。
下面的例子演示了如何使用这个事件。

private void CustomOpenDialog_Handler(Object sender, OpenSaveDialogEventArgs e){using (OpenFileDialog dialog = new OpenFileDialog()){dialog.Filter = "Report files (*.frx)|*.frx"。// 如果对话框中的 "报告文件",则将e.Cancel设置为false// 已成功执行e.Cancel = dialog.ShowDialog() != DialogResult.OK。//将e.FileName设置为选定的文件名。e.FileName = dialog.FileName。}}

自定义保存对话框 

发生在报表设计器即将显示 “保存 “对话框时。在事件处理程序中,您必须显示一个对话框窗口以允许用户选择一个报表文件。如果对话框成功执行,必须返回e.Cancel = false,并将e.FileName设置为所选文件名。
下面的例子演示了如何使用这个事件。

private void CustomSaveDialog_Handler(Object sender, OpenSaveDialogEventArgs e){using (SaveFileDialog dialog = new SaveFileDialog()){dialog.Filter = "Report files (*.frx)|*.frx";//从e.FileName中获取默认文件名。dialog.FileName = e.FileName;// 如果 dialog.FileName = e.FileName;// 如果 dialog.FileName = e.Cancel,则设置 e.Cancel 为 falsee.Cancel = dialog.ShowDialog() != DialogResult.OK;//将e.FileName设置为选定的文件名。e.FileName = dialog.FileName;}}

自定义打开报告 

发生在报表设计器即将加载报表时。在事件处理程序中,您必须从 e.FileName 属性中指定的位置加载 e.Report 属性中指定的报表。后一个属性包含 CustomOpenDialog 事件处理程序返回的名称。它可能是文件名、数据库键值等。
下面的示例演示了如何使用该事件:

private void CustomOpenReport_Handler(Object sender, OpenSaveReportEventArgs e){//从给定的e.FileName中加载报告。e.Report.Load(e.FileName);}

自定义保存报告 

发生在报表设计器准备保存报表时。在事件处理程序中,您必须将 e.Report 属性中指定的报告保存到 e.FileName 属性中指定的位置。后一个属性包含 CustomSaveDialog 事件处理程序返回的名称。它可能是文件名、数据库键值等。
下面的示例演示了如何使用该事件。

private void CustomSaveReport_Handler(Object sender, OpenSaveReportEventArgs e){// 将报告保存到给定的e.FileName中。e.Report.Save(e.FileName);}

替换标准进度窗口

在进行以下操作时,会显示进度窗口。

  • 运行报告
  • 印刷
  • 输出

你可以通过设置环境设置组件的ReportSettings.ShowProgress属性为false来关闭进度。除此之外,你还可以用你自己的进度窗口替换标准进度窗口。要做到这一点,请使用EnvironmentSettings组件的以下事件(参见 “配置FastReport.Net环境 “部分)。

StartProgress 

在操作前发生一次。在这种情况下,你必须创建自己的进度窗口并显示它。

进度 

每次处理当前报表页时发生。在这种情况下,您必须在窗口中显示进度状态。

FinishProgress 

操作后发生一次。在这个事件中,你必须销毁进度窗口。

Progress事件的参数为ProgressEventArgs类型。它有以下几个参数属性。
string Message | 消息文本
int Progress | 当前处理的报告页的索引。
int Total | 报告的总页数。当准备一个报告时,这个参数可能为0,因为总页数是未知的。
在大多数情况下,您需要在 Progress 事件处理程序中显示来自 e.Message 属性的文本。如果你想显示一个进度条,其他参数可能会很有用。

传递自己的连接字符串

如果您使用在报表中定义的数据源,您可能需要向报表传递应用程序定义的连接字符串。这可以通过三种方法来完成。

第一种方法:你直接将连接字符串传递给报表中的Connection对象。
执行以下操作。
report1.Load(…);
//在加载报表之后,运行报表之前进行操作
//假设我们在报告中只有一个连接
report1.Dictionary.Connections[0].ConnectionString = my_connection_string;
report1.Show();

第二种方法:你用报告参数传递一个连接字符串。执行以下操作。

  • 运行报表设计器
  • 在 “数据 “窗口中,创建一个新的报表参数(例如,名称为 “MyParameter”)。更多细节请参见《用户手册》。
  • 在 “数据 “窗口中,选择包含数据源的 “连接 “对象。
  • 切换到 “属性 “窗口,将ConnectionStringExpression属性设置为以下内容。

[M yParam eter]

  • 将连接字符串传递给MyParameter参数。
report1.SetParameterValue("MyParameter", my_connection_string);

第三种方法:使用EnvironmentSettings组件的DatabaseLogin事件(参见 “配置FastReport.Net环境 “部分)。该事件在每次FastReport打开连接时发生。下面是这个事件处理程序的一个例子。

private void environmentSettings1_DatabaseLogin(Object sender, DatabaseLoginEventArgs e){e.ConnectionString = my_connection_string;}

请记住,DatabaseLogin事件是全局的,它适用于所有报表。

传递自定义SQL

报表可能包含使用数据向导添加的数据源(通过 “数据|添加数据源… “菜单)。有时需要从您的应用程序向该数据源传递自定义SQL。要做到这一点,请使用以下代码。

using FastReport.Data.Report1.Load(...)report1.Load(...);//在加载报表之后,运行报表之前进行操作// 通过表的别名找到表TableDataSource table = report1.GetDataSource("MyTable") as TableDataSource.SelectCommand = "new SQL text";table.SelectCommand = "new SQL text";report1.Show();

对报表对象的引用

当您将报表作为一个类来使用时(请参阅 “存储报表和加载报表 “部分),您可以直接引用报表对象。下面的例子演示了如何改变报表中包含的 “Text1 “对象的字体。

SimpleListReport report = new SimpleListReport();
report.Text1.Font = new Font(“Arial”, 12);

在其他情况下,如果需要获取一个对象的引用,必须使用Report对象的FindObject方法。
TextObject text1 = report1.FindObject(“Text1”) as TextObject;
text1.Font = new Font(“Arial”, 12);

要引用报表中定义的数据源,使用Report对象的GetDataSource方法。该方法将数据源的别名作为参数。
DataSourceBase ds = report1.GetDataSource(“Products”);

还想要更多吗可以点击阅读【FastReport 报表2020最新资源盘点】查找需要的教程资源。让人兴奋的是FastReport .NET报表正在网火热销售中!低至3701元起!>>查看价格详情

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月19日
下一篇 2021年1月19日

相关推荐

发表回复

登录后才能评论