Domanda

Qualcuno sa come impostare il titolo sul visualizzatore di moduli quando mostra un documento XtraReport? Lo scenario è il seguente:

Ho un rapporto XtraReport configurato, lo mostro chiamando il metodo ShowPreviewDialog, si apre un modulo visualizzatore che mostra il documento. Devo impostare il titolo in questo modulo di visualizzazione e non riesco a trovare la proprietà o il modo per farlo.

Grazie in anticipo.

È stato utile?

Soluzione

Non credo che il modulo di anteprima utilizzato dall'oggetto XtraReport sia esposto in modo tale da poter semplicemente impostare il titolo. Tuttavia, è possibile creare il proprio modulo di anteprima . Ciò ti darebbe il massimo controllo su come viene visualizzata l'anteprima. Sfortunatamente, l'utilizzo di questo approccio richiede di invocare l'anteprima in modo diverso. Non chiameresti più myReport.ShowPreviewDialog (). Nell'esempio, il report è un membro privato del modulo di anteprima creato nell'evento di caricamento del modulo. Passerei un riferimento a un oggetto report esistente nel modulo prima che venga caricato, in modo da poter riutilizzare un modulo di anteprima di stampa.

Altri suggerimenti

MODIFICA: Apparentemente se non chiami CreateDocument sembrerà funzionare a volte, altre volte no. Quindi assicurati che sia lì (mancava nel mio primo post).

Credo che la risposta di Kyle non sia corretta. Sembra che tu possa accedere al modulo, semplicemente non è intuitivo. Come ha sottolineato Pierre, ci sono validi motivi per creare il tuo modulo, ma se trovi quello predefinito e vuoi solo personalizzare il titolo, prova:

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

Nei nostri progetti, finiamo sempre per creare un ReportViewer con lo scopo di visualizzare un XtraReport (o PrintingSystem ).

Il visualizzatore è costituito da un normale XtraForm sul quale rilasciamo un PrintRibbonController. Ciò creerà automaticamente la barra multifunzione e il controllo di stampa.

Quindi utilizziamo un metodo che associa il report al visualizzatore:

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();
    }
}

Quindi la visualizzazione di un rapporto è la seguente:

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

Questo approccio alla creazione del tuo visualizzatore può aiutarti:

  • Gestisce la sicurezza per utente (ad esempio: un utente normale non può cambiare la filigrana),
  • Cambia la barra multifunzione rimuovendo o aggiungendo il pulsante per soddisfare le tue esigenze.

Penso che ci sia un articolo sul supporto devexpress che potrebbe aiutarti - Impossibile cambiare riporta la didascalia della barra del titolo della finestra di anteprima

L'essenza di ciò:

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

Puoi usare la classe ReportPrintTool per risolvere il tuo problema:

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

Ho trovato molto utile la risposta di Pierre: avere il proprio Report Viewer personalizzato può davvero aiutarti a gestire l'accesso e simili. Ho aggiunto questo codice:

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

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

Ovviamente devi avere i riferimenti:

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

Grazie ancora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top