XtraReportのビューアフォームにプログラムでタイトルを設定します

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

  •  05-07-2019
  •  | 
  •  

質問

XtraReportドキュメントを表示するときに、フォームビューアーにタイトルを設定する方法を知っている人はいますか? シナリオは次のとおりです。

XtraReportレポートが構成されています。ShowPreviewDialogメソッドを呼び出してレポートを表示すると、ビューアーフォームが開き、ドキュメントが表示されます。このビューアフォームにタイトルを設定する必要がありますが、プロパティまたはこれを実現する方法が見つかりません。

事前に感謝します。

役に立ちましたか?

解決

XtraReportオブジェクトで使用されるプレビューフォームが、タイトルを設定するだけの方法で公開されているとは思わない。ただし、独自のプレビューフォームを作成することは可能です。これにより、プレビューの表示方法を最終的に制御できます。残念ながら、そのアプローチを使用するには、プレビューを異なる方法で呼び出す必要があります。 myReport.ShowPreviewDialog()を呼び出さなくなりました。この例では、レポートは、フォームのロードイベントで作成されたプレビューフォームのプライベートメンバーです。ただし、既存のレポートオブジェクトへの参照をフォームに読み込んでから、1つの印刷プレビューフォームを再利用できるようにします。

他のヒント

編集: CreateDocumentを呼び出さないと、時々動作するように見えますが、そうでない場合もあります。それがそこにあることを確認してください(私の最初の投稿にはありませんでした)。

カイルの答えは正しくないと思います。フォームにアクセスできるように見えますが、直感的ではありません。 Pierreが指摘したように、独自のフォームを作成する正当な理由がありますが、デフォルトで見つけてタイトルをカスタマイズしたい場合は、次を試してください:

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

プロジェクトでは、常に XtraReport (または PrintingSystem )を表示することを目的とした ReportViewer フォームを作成します。 p>

ビューアは、PrintRibbonControllerをドロップする通常のXtraFormで構成されています。これにより、リボンバーと印刷コントロールが自動的に作成されます。

次に、レポートをビューアにバインドするメソッドを使用します:

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

Pierreの回答は非常に役立つことがわかりました。独自のカスタムレポートビューアーを使用すると、アクセスなどの管理に役立ちます。このコードを追加しました:

 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