2009-09-09 6 views
2

Est-ce que quelqu'un sait comment définir le titre de la visionneuse de formulaire lors de l'affichage d'un document XtraReport? Le scénario est le suivant:Définir par programme le titre du formulaire de visualisation dans XtraReport

J'ai un rapport XtraReport configuré, je l'affiche en appelant la méthode ShowPreviewDialog, un formulaire de visualisation s'ouvre et affiche le document. J'ai besoin de définir le titre de ce formulaire de visionneuse et ne peut pas trouver la propriété ou la façon d'accomplir cela.

Merci d'avance.

Répondre

2

Je ne crois pas que le formulaire d'aperçu utilisé par l'objet XtraReport soit exposé de telle sorte que vous puissiez simplement définir le titre. Cependant, il est possible de create your own preview form. Cela vous donnerait le contrôle ultime sur la façon dont votre aperçu est affiché. Malheureusement, l'utilisation de cette approche nécessite que vous invoquiez l'aperçu différemment. Vous n'appelez plus myReport.ShowPreviewDialog(). Dans l'exemple, le rapport est un membre privé du formulaire d'aperçu créé dans l'événement de chargement du formulaire. Mais je passerais une référence à un objet de rapport existant dans le formulaire avant de le charger afin que vous puissiez réutiliser un formulaire d'aperçu avant impression.

+0

Merci Kyle! J'ai une question cependant ... J'ai remarqué que vous (ou le tutoriel que vous avez envoyé) utilise le PrintBarManager et le PrintControl, alors que Pierre propose l'utilisation du contrôle PrintRibbon, quels sont les avantages/inconvénients de ces deux approches? – Sebastian

+0

Je ne connais pas d'avantages ou d'inconvénients particuliers. C'est juste une question de préférence. Comparez le PrintControl dans le didacticiel auquel je suis lié avec cette capture d'écran d'un PrintRibbonControl: http://imgur.com/N7WeL.png –

+0

Hey Kyle, je pense que j'ai trouvé une différence ... si vous voulez utiliser le contrôle du ruban, vous devrez acheter la suite XtraBars. Apparemment, si je viens d'acheter une licence XtraReports, le ruban n'est pas inclus. – Sebastian

2

Dans nos projets, nous finissons toujours par créer un formulaire ReportViewer dans le but d'afficher un XtraReport (ou PrintingSystem).

La visionneuse consiste en un XtraForm normal sur lequel nous laissons tomber un PrintRibbonController. Cela crée automatiquement la barre de ruban et le contrôle d'impression.

Ensuite, nous utilisons une méthode qui lie le rapport au spectateur:

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

affiche donc un rapport va comme ceci:

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

Cette approche de la création de votre propre visionneuse peut vous aider à:

  • Gère la sécurité par l'utilisateur (par exemple: un utilisateur normal ne peut pas modifier le filigrane),
  • Modifie le ruban en supprimant ou en ajoutant un bouton pour l'adapter à vos besoins.
+0

C'est très utile Pierre, merci! Pouvez-vous jeter un oeil à mes commentaires à la réponse de Kyle? – Sebastian

5

EDIT: Apparemment si vous ne l'appelez pas CreateDocument il semble fonctionner parfois, d'autres fois non. Alors assurez-vous qu'il est là (il manquait dans mon premier post). Je crois que la réponse de Kyle n'est pas correcte. Il semble que vous pouvez accéder au formulaire, ce n'est pas intuitif.Comme Pierre l'a souligné, il y a des raisons valables pour créer votre propre forme, mais si vous êtes trouver avec la valeur par défaut et que vous voulez juste pour personnaliser le titre puis essayez:

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

Très intéressant Andrew. Vous avez raison, certaines choses ne sont pas si intuitives. +1 pour vous, merci. – Sebastian

+0

Je me demande s'il y a un moyen de le faire à l'intérieur du rapport. Je suis intéressé par un rapport de base avec une propriété ReportTitle et lorsque vous ouvrez les rapports dérivés, assignez le prop et laissez les rapports définir le titre. S'il y a un moyen d'accéder au formulaire d'hébergement ou quelque chose qui me donne accès ... – Sebastian

2

Je pense qu'il ya un article sur le DevExpress suport qui pourraient vous aider - Unable to change report preview window titlebar caption

L'essentiel de celui-ci:

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

vous pouvez utiliser ReportPrintTool classe pour résoudre votre problème:

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

J'ai trouvé la réponse de Pierre très utile - avoir votre propre Report Viewer personnalisé peut en effet vous aider à gérer les accès et autres. J'ai ajouté ce code:

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

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

-sûr tu dois avoir les références:

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

Encore une fois Merci.

Questions connexes