Pergunta

Alguém sabe como definir o título para o espectador formulário quando mostrando um documento XtraReport? O cenário é o seguinte:

Eu tenho um relatório XtraReport configurado, eu mostrá-lo chamando o método ShowPreviewDialog, uma forma espectador abre e mostra o documento. Eu preciso definir o título para esta forma espectador e não consegue encontrar a propriedade ou maneira de conseguir isso.

Agradecemos antecipadamente.

Foi útil?

Solução

Eu não acredito que a forma de visualização utilizado pelo objeto XtraReport é exposto de tal maneira que você poderia simplesmente definir o título. No entanto, é possível criar o seu próprio formulário de visualização . Que lhe daria o controle final sobre como sua visualização é exibida. Infelizmente, usando essa abordagem requer que você invocar a visualização de forma diferente. Você deixaria de chamar myReport.ShowPreviewDialog (). No exemplo, o relatório é um membro particular da forma de visualização que é criado no evento de carregamento do formulário. Mas eu gostaria de passar uma referência a um objeto de relatório existente no formulário antes de carregar para que você possa voltar a usar formulário de visualização uma impressão.

Outras dicas

EDIT: Aparentemente, se você não chamar CreateDocument ele aparecerá ao trabalho, às vezes, outras vezes não. Portanto, verifique se ele está lá (que estava faltando no meu primeiro post).

Eu acredito que a resposta de Kyle não é correto. Parece que você pode acessar o formulário, não é apenas intuitivo. Como Pierre apontou, há razões válidas para criar a sua própria forma, mas se você encontrar com o padrão e só quero personalizar o título, em seguida, tentar:

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

Em nossos projetos, nós sempre acabam criando uma forma ReportViewer essa finalidade é exibir uma XtraReport (ou PrintingSystem).

O espectador consistem de um XtraForm normal, em que nós deixamos cair um PrintRibbonController. Isso criará automaticamente a barra de fita e controle de impressão.

Em seguida, usamos um método que ligam o relatório para o 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();
    }
}

Assim, exibindo um relatório é a seguinte:

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

Esta abordagem de criar seu próprio espectador pode ajudá-lo:

  • Gerencia de segurança por usuário (por exemplo: um usuário normal não pode alterar a marca d'água),
  • Altera a fita, removendo ou adicionando o botão para atender às suas necessidades.

Eu penso que há um artigo sobre o suport DevExpress que pode ajudá-lo - incapaz de mudar janela de visualização do relatório da barra de título legenda

A essência do que:

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

Você pode usar ReportPrintTool classe para a fixação de seu problema:

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

Eu encontrei a resposta de Pierre muito útil - ter seu próprio costume Report Viewer pode realmente ajudá-lo a gerenciar o acesso e similares. Eu adicionei este código:

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

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

de curso você tem que ter as referências:

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

Obrigado novamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top