Установить программно заголовок для формы просмотра в XtraReport - PullRequest
2 голосов
/ 09 сентября 2009

Кто-нибудь знает, как установить заголовок для средства просмотра форм при отображении документа XtraReport? Сценарий следующий:

У меня настроен отчет XtraReport, я показываю его, вызывая метод ShowPreviewDialog, открывается форма просмотра и показывает документ. Мне нужно установить заголовок для этой формы просмотра и не могу найти свойство или способ сделать это.

Заранее спасибо.

Ответы [ 6 ]

5 голосов
/ 23 сентября 2009

РЕДАКТИРОВАТЬ: Очевидно, что если вы не вызываете CreateDocument, иногда он будет работать, а иногда нет. Поэтому убедитесь, что он есть (его не было в моем первом посте).

Я считаю, что ответ Кайла не верен. Похоже, что вы можете получить доступ к форме, это просто не интуитивно понятно. Как отметил Пьер, есть веские причины для создания собственной формы, но если вы нашли вариант по умолчанию и просто хотите изменить заголовок, попробуйте:

using(var rpt = new XtraReport1())
{
   rpt.PrintingSystem.PrintPreviewFormEx.Text = "My Custom Caption";
   rpt.CreateDocument();
   rpt.ShowPreviewDialog();
}
2 голосов
/ 09 сентября 2011

Я думаю, что есть статья о поддержке devexpress, которая может вам помочь - Невозможно изменить заголовок окна предварительного просмотра отчета заголовок заголовка

Суть этого:

XtraReport1 rep = new XtraReport1();
            rep.CreateDocument();
            PrintPreviewFormEx form = new PrintPreviewFormEx();
            form.Text = "test";
            form.PrintingSystem = rep.PrintingSystem;
            form.Show(); 
2 голосов
/ 10 сентября 2009

В наших проектах мы всегда создаем форму ReportViewer, целью которой является отображение XtraReport (или PrintingSystem).

Средство просмотра состоит из обычного XtraForm, в который мы помещаем PrintRibbonController. Это автоматически создаст ленту и управление печатью.

Затем мы используем метод, который привязывает отчет к зрителю:

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

Таким образом, отображение отчета выглядит так:

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

Такой подход к созданию собственного средства просмотра может помочь вам:

  • Управляет безопасностью пользователя (например, обычный пользователь не может изменить водяной знак),
  • Изменяет ленту, удаляя или добавляя кнопку в соответствии с вашими требованиями.
2 голосов
/ 10 сентября 2009

Я не верю, что форма предварительного просмотра, используемая объектом XtraReport, представлена ​​таким образом, что вы можете просто установить заголовок. Однако можно создать собственную форму предварительного просмотра . Это даст вам полный контроль над тем, как отображается ваш предварительный просмотр. К сожалению, использование этого подхода требует от вас предварительного просмотра по-другому. Вы больше не будете вызывать myReport.ShowPreviewDialog (). В этом примере отчет является закрытым членом формы предварительного просмотра, которая создается в событии загрузки формы. Но я бы передал ссылку на существующий объект отчета в форму перед его загрузкой, чтобы вы могли повторно использовать одну форму предварительного просмотра.

0 голосов
/ 21 мая 2012

Я нашел ответ Пьера очень полезным - наличие собственного пользовательского средства просмотра отчетов действительно может помочь вам в управлении доступом и тому подобном. Я добавил этот код:

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

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

Конечно, вы должны иметь ссылки:

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

Еще раз спасибо.

0 голосов
/ 13 марта 2012

Вы можете использовать ReportPrintTool класс для решения вашей проблемы:

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