2009-09-09 10 views
2

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

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

ありがとうございます。

答えて

2

XtraReportオブジェクトで使用されるプレビューフォームが、単にタイトルを設定できるように公開されているとは思いません。ただし、create your own preview formに可能です。プレビューの表示方法を究極的に制御できます。残念ながら、その方法を使用するにはプレビューを別の方法で呼び出す必要があります。 myReport.ShowPreviewDialog()を呼び出すことはもうありません。この例では、レポートはフォームのloadイベントで作成されたプレビューフォームのプライベートメンバーです。しかし、既存のレポートオブジェクトへの参照をフォームに渡してから、1つの印刷プレビューフォームを再利用できるようにします。

+0

ありがとうKyle!しかし、私はあなたが送ったチュートリアルではPrintBarManagerとPrintControlを使用していますが、PierreはPrintRibbonコントロールの使用を提案していますが、これらの2つのアプローチのメリットとデメリットは何ですか? – Sebastian

+0

私は特定の長所や欠点についてはわかりません。それは好みの問題です。 PrintRibbonControlのこのスクリーンショットにリンクされているチュートリアルを比較してください: http://imgur.com/N7WeL.png –

+0

ちょっとカイイ、私は違いがあると思っています...あなたがリボンコントロールを使いたいのであれば、 XtraBarsスイートを購入する必要があります。明らかに、私がXtraReportsライセンスを購入しただけの場合、リボンは含まれていません。 – Sebastian

2

私たちのプロジェクトでは、最終的にReportViewerというフォームが作成され、その目的はXtraReport(またはPrintingSystem)と表示されます。

ビューアは、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(); 

独自のビューアを作成するこのアプローチは、あなたを助けることができます。

  • ユーザーごとのセキュリティを管理します(通常のユーザーはウォーターマークを変更できません)。
  • 要件に合わせてボタンを削除または追加してリボンを変更します。
+0

これは非常に便利です、ピエール、ありがとう!カイルの答えに私のコメントを見てもらえますか? – Sebastian

5

EDIT:あなたはのcreateDocumentを呼び出さない場合どうやら時々、他の回ではない仕事に表示されます。だから、それがそこにあることを確認してください(私の最初の投稿には欠けていました)。

私はカイルの答えが正しくないと信じています。フォームにアクセスできるように見えますが、直感的ではありません。ピエールが指摘したように、独自のフォームを作成するための有効な理由がありますが、あなたがデフォルトで見つけ、ちょうどしようと、その後のタイトルをカスタマイズしたい場合:

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

非常に面白いアンドリュー。あなたは正しい、いくつかのことはそれが直感的ではない。 +1、ありがとう。 – Sebastian

+0

報告書の中でそれを行う方法があるのだろうかと思います。私は、ReportTitleというプロパティを持つBase Reportを持つことに興味があり、派生したレポートを開くと、propを割り当てて、レポートにタイトルを設定させます。私にアクセスできるホスティングフォームや何かにアクセスする方法があれば... – Sebastian

2

私はDevExpress社の対応無しの記事があると思いますそれはあなたを助けるかもしれない - Unable to change report preview window titlebar caption

その要旨:

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

あなたはあなたの問題を固定するためのReportPrintToolクラスを使用することができます。

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

私は、Pierreの答えが非常に有用であることを発見しました。独自のカスタムレポートビューアを使用すると、アクセスなどの管理に役立つことがあります。再び

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

ありがとう:あなたが得たのは、もちろん

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

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

が参照を持っている:私はこのコードを追加しました。

関連する問題