قم بتعيين عنوان نموذج العارض برمجيًا في 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