XtraReportのビューアフォームにプログラムでタイトルを設定します
-
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;
ありがとうございます。