Установите выравнивание XRPictureBox во время выполнения

Я хочу создать класс шаблона XtraReport, который получает объект отчета и преобразует его в дизайн нашей компании. Сначала я создаю ReportHeaderBand, который получает XRPictureBox для логотипа. Как разместить XRPictureBox справа от моего ReportHeaderBand?

Это то, что я делаю до сих пор:

internal class Kopfbereich: ReportHeaderBand
    {
        /// <summary>
        /// Erstellt ein Objekt für den Kopfbereich eines Reports
        /// </summary>
        public Kopfbereich()
        {
            DruckeLogo();
        }

        private void DruckeLogo()
        {
            XRPictureBox picBox = new XRPictureBox();
            picBox.Visible = true;
            picBox.Sizing = ImageSizeMode.AutoSize;
            picBox.Image = Resources.Brillux_Logo_Reports_ohne_Text;
            this.Controls.Add(picBox);
        }
    }

    //This Method is from other class and should print my report with template
    public XtraReport DruckeMitVorlage(XtraReport report)
    {
        Kopfbereich kopfbereich = new Kopfbereich();
        report.Bands.Add(kopfbereich);
        return report;
    }

Я хочу создать его во время выполнения, чтобы получить динамический шаблон. Так что конструктор не вариант.

Я попытался выполнить следующую строку кода, чтобы установить XRPictureBox справа.

picBox.LocationF = new PointF(Report.PageWidth - picBox.WidthF - Report.Margins.Right.Width, 0);

Но логотип отображается наполовину на следующей странице.


person Sebi    schedule 15.10.2013    source источник


Ответы (1)


Я предлагаю вам добавить этот элемент управления XRPictureBox в report header band, а не this.Controls. Он может контролировать редактирование изображения для печати в верхней части отчета, а не на других страницах.

проверьте фрагмент кода:

// Check if the TopMargin band is already present in the report. 
if(Bands.GetBandByType(typeof(ReportHeaderBand)) == null) {
    // Create a new TopMargin band and add it to the report. 
    ReportHeaderBandtmBand = new ReportHeaderBand();
    Bands.Add(tmBand);

    // Create a picture object
    XRPictureBox picBox = new XRPictureBox();
    picBox.Visible = true;
    picBox.Sizing = DevExpress.XtraPrinting.ImageSizeMode.AutoSize;
    picBox.Image = Resources.Logo;
    this.Controls.Add(picBox);

    // Add the label to the ReportHeaderBand band. 
    tmBand.Controls.Add(picBox);
}

Вы можете разместить управление с помощью объекта отчета, как показано ниже:

 // Place the chart onto a report footer
  rep.Bands[BandKind.ReportHeader].Controls.Add(picBox);

Ссылка:
Как динамически создавать отчеты в приложении WinForms

person Niranjan Singh    schedule 15.10.2013
comment
Я отредактировал свой пост. Извините, не публикуйте полный код. На самом деле я делаю то же самое, что и вы, я думаю. Я просто не знаю, как поставить XRPictureBox на правильную границу (выравнивание = справа). Спасибо за быстрый ответ. - person Sebi; 15.10.2013
comment
попробуйте добавить панель в заголовок отчета, а затем добавьте к ней этот элемент управления изображением.. затем попробуйте использовать событие перед печатью, чтобы указать, где разместить. Dock свойство XRControls может быть абсолютным. - person Niranjan Singh; 15.10.2013
comment
Проблема в том, что я не могу поставить Точку на место. Событие BeforePrint просто дает мне PrintAction и Cancel. Как я могу получить местоположение с правой стороны ReportHeaderBand, чтобы установить его для моего XRPictureEdit? Нет свойства выравнивания :-( - person Sebi; 15.10.2013