Программно установите заголовок формы просмотра в XtraReport.

StackOverflow https://stackoverflow.com/questions/1401507

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

В наших проектах мы всегда заканчиваем созданием 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();

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

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

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

Суть этого:

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

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

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

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

 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;

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top