Definir programaticamente o título para a forma espectador em XtraReport
-
05-07-2019 - |
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.
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.