Pregunta

¿Alguien sabe cómo configurar el título para el visor de formularios cuando muestra un documento de XtraReport? El escenario es el siguiente:

Tengo un informe XtraReport configurado, lo muestro llamando al método ShowPreviewDialog, se abre un formulario de visor y muestra el documento. Necesito establecer el título en este formulario de visor y no puedo encontrar la propiedad o la forma de lograr esto.

Gracias de antemano.

¿Fue útil?

Solución

No creo que el formulario de vista previa utilizado por el objeto XtraReport esté expuesto de tal manera que simplemente pueda establecer el título. Sin embargo, es posible crear su propio formulario de vista previa . Eso le daría el máximo control sobre cómo se muestra su vista previa. Desafortunadamente, usar ese enfoque requiere que invoques la vista previa de manera diferente. Ya no llamaría a myReport.ShowPreviewDialog (). En el ejemplo, el informe es un miembro privado del formulario de vista previa que se crea en el evento de carga del formulario. Pero pasaría una referencia a un objeto de informe existente en el formulario antes de que se cargue para que pueda reutilizar un formulario de vista previa de impresión.

Otros consejos

EDITAR: Aparentemente, si no llama a CreateDocument, a veces parece funcionar, otras no. Así que asegúrate de que esté allí (faltaba en mi primera publicación).

Creo que la respuesta de Kyle no es correcta. Parece que puedes acceder al formulario, simplemente no es intuitivo. Como señaló Pierre, hay razones válidas para crear su propio formulario, pero si se encuentra con el predeterminado y solo desea personalizar el título, intente:

using(var rpt = new XtraReport1())
{
   rpt.PrintingSystem.PrintPreviewFormEx.Text = "My Custom Caption";
   rpt.CreateDocument();
   rpt.ShowPreviewDialog();
}

En nuestros proyectos, siempre terminamos creando un formulario ReportViewer cuyo propósito es mostrar un XtraReport (o PrintingSystem ).

El visor consiste en un XtraForm normal en el que soltamos un PrintRibbonController. Eso creará automáticamente la barra de cinta y el control de impresión.

Luego usamos un método que vincula el informe al espectador:

public partial class ReportViewer : DevExpress.XtraEditors.XtraForm
{
    public ReportViewer()
    {
        InitializeComponent();
    }

    // Used when displaying a single report
    public void SetReport(XtraReport report)
    {
        this.printControl.PrintingSystem = report.PrintingSystem;
        report.CreateDocument();
        this.printControl.UpdatePageView();
    }

    // Used when displaying merged reports
    public void SetReport(PrintingSystem system)
    {
        this.printControl.PrintingSystem = system;
        this.printControl.UpdatePageView();
    }
}

Así que mostrar un informe es así:

ReportViewer viewer = new ReportViewer();
viewer.SetReport(new EmployeeReport());
viewer.Show();

Este enfoque de crear su propio visor puede ayudarlo a:

  • Administra la seguridad por usuario (por ejemplo: un usuario normal no puede cambiar la marca de agua),
  • Cambia la cinta quitando o agregando el botón para ajustarse a sus requisitos.

Creo que hay un artículo sobre el soporte de devexpress que puede ayudarlo: No se puede cambiar título de la barra de título de la ventana de vista previa del informe

Lo esencial:

XtraReport1 rep = new XtraReport1();
            rep.CreateDocument();
            PrintPreviewFormEx form = new PrintPreviewFormEx();
            form.Text = "test";
            form.PrintingSystem = rep.PrintingSystem;
            form.Show(); 

Puede usar clase ReportPrintTool para solucionar su problema:

var report = new MyXtraReport();
ReportPrintTool reportPrintTool = new ReportPrintTool(report);
reportPrintTool.PreviewForm.Text = "Some Text"
report.ShowPreviewDialog();    

He encontrado la respuesta de Pierre muy útil: tener su propio Visor de informes personalizado puede ayudarlo a administrar el acceso y cosas similares. He añadido este código:

 PrintingSystemCommand[] commands = {PrintingSystemCommand.DocumentMap,
                                                   PrintingSystemCommand.Open,
                                                   PrintingSystemCommand.Save};

 this.printControl1.PrintingSystem.SetCommandVisibility(commands, CommandVisibility.None);

Por supuesto que debes tener las referencias:

using DevExpress.XtraEditors;
using DevExpress.XtraReports.UI;
using DevExpress.XtraPrinting;

Gracias de nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top