using System; using System.ComponentModel; using FastReport.Forms; using FastReport.Data; using FastReport.Utils; namespace FastReport { partial class ReportSettings { private ProgressForm progress; private bool showProgress = true; private bool showPerformance; /// /// Occurs before displaying a progress window. /// public event EventHandler StartProgress; /// /// Occurs after closing a progress window. /// public event EventHandler FinishProgress; /// /// Occurs after printing a report. /// public event EventHandler ReportPrinted; /// /// Occurs when progress state is changed. /// public event ProgressEventHandler Progress; /// /// Gets or sets a value that determines whether to show the progress window /// when perform time-consuming operations such as run, print, export. /// [DefaultValue(true)] public bool ShowProgress { get { return showProgress; } set { showProgress = value; } } /// /// Gets or sets a value that determines whether to show the information about /// the report performance (report generation time, memory consumed) in the /// lower right corner of the preview window. /// [DefaultValue(false)] public bool ShowPerformance { get { return showPerformance; } set { showPerformance = value; } } internal void OnStartProgress(Report report) { progress = null; report.SetAborted(false); if (ShowProgress) { if (StartProgress != null) StartProgress(report, EventArgs.Empty); else { progress = new ProgressForm(report); progress.ShowProgressMessage(Res.Get("Messages,PreparingData")); progress.Show(); progress.Refresh(); } } } internal void OnFinishProgress(Report report) { if (ShowProgress) { if (FinishProgress != null) FinishProgress(report, EventArgs.Empty); else if (progress != null) { progress.Close(); progress.Dispose(); progress = null; } } } internal void OnProgress(Report report, string message) { OnProgress(report, message, 0, 0); } internal void OnProgress(Report report, string message, int pageNumber, int totalPages) { if (ShowProgress) { if (Progress != null) Progress(report, new ProgressEventArgs(message, pageNumber, totalPages)); else if (progress != null) progress.ShowProgressMessage(message); } } internal void OnReportPrinted(object sender) { if (ReportPrinted != null) ReportPrinted(sender, EventArgs.Empty); } internal void OnDatabaseLogin(DataConnectionBase sender, DatabaseLoginEventArgs e) { if (Config.DesignerSettings.ApplicationConnection != null && sender.GetType() == Config.DesignerSettings.ApplicationConnectionType) { e.ConnectionString = Config.DesignerSettings.ApplicationConnection.ConnectionString; } if (DatabaseLogin != null) DatabaseLogin(sender, e); } } }