CustomOpenDialog 发生在报告设计器将显示“打开”对话框。 在事件处理程序中,你必须显示一个对话框,允许用户 选择一个报表文件。如果对话框已成功执行,你必须 返回e.Cancel = false和设置(e.FileName) 对选中的文件的文件名 的名字。 下面的例子演示了如何使用这个事件: private void CustomOpenDialog_Handler( object sender, OpenSaveDialogEventArgs e) { using (OpenFileDialog dialog = new OpenFileDialog()) { dialog.Filter = \ // set e.Cancel to false if dialog // was succesfully executed e.Cancel = dialog.ShowDialog() != DialogResult.OK; // set e.FileName to the selected file name e.FileName = dialog.FileName; } } CustomSaveDialog 发生在报告设计器将显示“保存”对话框。 在事件处理程序中,你必须显示一个对话框,允许用户 选择一个报表文件。如果对话框已成功执行,你必须 返回e。取消= false和设置e。对选中的文件的文件名 的名字。 下面的例子演示了如何使用这个事件: private void CustomSaveDialog_Handler( object sender, OpenSaveDialogEventArgs e) { using (SaveFileDialog dialog = new SaveFileDialog()) { dialog.Filter = \ // get default file name from e.FileName dialog.FileName = e.FileName; // set e.Cancel to false if dialog // was succesfully executed e.Cancel = dialog.ShowDialog() != DialogResult.OK; // set e.FileName to the selected file name e.FileName = dialog.FileName; } } CustomOpenReport 发生在报告设计器将载荷报告。在 事件处理程序,您必须指定加载报告在e报告 房地产从指定的位置在e。FileName属性。 这个 后者属性包含的名称被退回 CustomOpenDialog事件处理程序。 它可能是文件名, 数据库的键值,等等。 下面的例子演示了如何使用这个事件: private void CustomOpenReport_Handler( object sender, OpenSaveReportEventArgs e) { // load the report from the given e.FileName e.Report.Load(e.FileName); } CustomSaveReport 发生在报告设计器将保存报告。在 事件处理程序,您必须保存报告指定的e报告 属性指定的位置在e。FileName属性。 这个 后者属性包含的名称被退回 CustomSaveDialog事件处理程序。 它可能是文件名, 数据库的键值,等等。 下面的例子演示了如何使用这个事件: private void CustomSaveReport_Handler( object sender, OpenSaveReportEventArgs e) { // save the report to the given e.FileName e.Report.Save(e.FileName); }
更换标准进度窗口
这个进度窗口显示在以下操作: 1. 运行报告 2. 打印 3. 导出
你可以关掉进步通过设置ReportSettings。 ShowProgress财产的 EnvironmentSettings组件为false。 除此之外,你可能取代标准用你自己的进度窗口。要做到这一点,使用以下的事件
EnvironmentSettings组件(参见 “ 配置FastReport.Net 环境“部分): 事件 描述 StartProgress Progress FinishProgress 操作前发生一次。在这种情况下,您必须创建你的自己的进度窗口并显示它。 每次当电流发生报告页面处理。在这种情况下,你必须显示在你的窗口的步进状态。 操作后发生一次。在这种情况下,你必须摧毁进度窗口。
事件的进展需要e参数的ProgressEventArgs类型。 它具有以下属性:
属性 string Message int Progress int Total 描述 消息文本。 该索引 代表目前的报告页面处理的。 在一个报告总页数量。一份报告准备时这个参数可以是0,因为数量的页数是未知的。 在大多数情况下,你需要显示的文本从e.Message属性,在进步事件处理程序。其他参数可能是有用的,如果你想显示一个进度条。
传递自己的连接字符串
如果你使用数据源定义在一个报告中,你可能需要通过一个应用程序- 定义连接字符串的报告。这可以在三个方面做到。
第一个方法:你通过连接字符串直接连接对象在一个报告。 做到以下几点:
report1.Load(...);
// do it after loading the report, before running it // assume we have one connection in the report / /加载报告后,在运行前
/ /假设我们有一个连接在该报告
report1.Dictionary.Connections[0].ConnectionString = my_connection_string; report1.Show();
第二种方法:你通过连接字符串使用报告参数。做以下: 运行报表设计器·;
在“数据”·窗口,创建一个新报告参数(以“MyParameter”的名字,例)。见用户手册为更多的细节;
在“数据”·窗口,选择“连接”的对象,它包含一个数据来源;·切换到“属性”窗口,设置ConnectionStringExpression属性以下:
[MyParameter]
·通过连接字符串到MyParameter参数:
report1.SetParameterValue(\
private void environmentSettings1_DatabaseLogin( object sender, DatabaseLoginEventArgs e)
{
e.ConnectionString = my_connection_string; }
记住,DatabaseLogin事件是全球性的,它适用于所有的报告。
传递自定义SQL
该报告可能包含数据源添加使用数据向导(通过“数据|添加
数据来源??”菜单)。有时候是需要通过自定义SQL数据资料来源 您的应用程序。要做到这一点,使用以下代码:
using FastReport.Data; report1.Load(...);
// do it after loading the report, before running it // find the table by its alias
/ /加载报告后,在运行前 / /找到表的别名
TableDataSource table = report1.GetDataSource(\TableDataSource;
table.SelectCommand = \report1.Show();
报告对象引用
当你使用一个报告作为一个类(参见“存储一个报告和装载它”部分),你可参考报告对象直接。下面的示例演示了如何改变字体的“Text1”对象包含在报告: SimpleListReport report = new SimpleListReport(); report.Text1.Font = new Font(\
在其他情况下,您必须使用FindObject方法报告对象,如果你需要一个对象的引用:
DataSourceBase ds = report1.GetDataSource(\
通过使用代码创建一个报告
让我们考虑一下如何创建一个报告在代码中。我们将创建以下报告:
Report report = new Report();
// register the \
report.RegisterData(dataSet1.Tables[\ // enable it to use in a report
report.GetDataSource(\ // create A4 page with all margins set to 1cm ReportPage page1 = new ReportPage(); page1.Name = \ report.Pages.Add(page1); // create ReportTitle band
page1.ReportTitle = new ReportTitleBand(); page1.ReportTitle.Name = \ // set its height to 1.5cm
page1.ReportTitle.Height = Units.Centimeters * 1.5f; // create group header
GroupHeaderBand group1 = new GroupHeaderBand(); group1.Name = \
group1.Height = Units.Centimeters * 1; // set group condition
group1.Condition = \ // add group to the page.Bands collection page1.Bands.Add(group1); // create group footer
group1.GroupFooter = new GroupFooterBand(); group1.GroupFooter.Name = \
group1.GroupFooter.Height = Units.Centimeters * 1; // create DataBand
DataBand data1 = new DataBand(); data1.Name = \
data1.Height = Units.Centimeters * 0.5f; // set data source
data1.DataSource = report.GetDataSource(\ // connect databand to a group group1.Data = data1; // create \ // report title
TextObject text1 = new TextObject(); text1.Name = \ // set bounds
text1.Bounds = new RectangleF(0, 0,
Units.Centimeters * 19, Units.Centimeters * 1); // set text
text1.Text = \

