Настройка полей для конкретной страницы в AR3 - PullRequest
2 голосов
/ 26 июля 2010

Я пытаюсь программно установить поля в активном отчете на основе номера страницы.

В частности, первая страница должна иметь небольшие поля (так, чтобы самое верхнее текстовое поле с обратным адресом соответствовало выравниванию логотипа компании), а каждая страница после этого должна иметь стандартные поля 2,54 см.

Я читал посты, которые предполагают, что определение фактического номера страницы может быть проблематичным, поэтому я попытался использовать обработчики ReportStart и PageStart вместе с очень простой логикой для установки полей.

Вв качестве кода для отчета я добавил два обработчика и значение bool:

 this.ReportStart += UFAnReportStart;
        this.PageStart += UFAnPageStart;
 bool bFirstPage = true;

, а затем добавил два обратных вызова следующим образом:

private void UFAnReportStart(object sender, System.EventArgs eArgs)
    {           
        this.PageSettings.Margins.Top = 0.1965278F;
    }

private void UFAnPageStart(object sender, System.EventArgs eArgs)
    {
        // every page after the first should have standard margins.
        if (!bFirstPage)
        {               
            this.PageSettings.Margins.Top = 2.54F;
        }
        bFirstPage = false;
    }

Это не похоже наиметь какое-либо влияние на поля.Этот подход просто неправильно?Или объект PageSettings является широким свойством отчета?

Приветствуются любые предложения по альтернативным подходам.

с использованием Activereports3, версия 5.2.1013.2.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 26 июля 2010

Программно единицы измерения в дюймах, а не в СМ :) Настройка времени разработки влияет только на то, что показано в конструкторе.

У меня сработало следующее:

public void ActiveReport_ReportStart()
{
    rpt.PageSettings.Margins.Top = 0.05f;
    rpt.PageSettings.Margins.Left = 0.05f;
    rpt.PageSettings.Margins.Right = 0.05f;
    rpt.PageSettings.Margins.Bottom = 0.05f;    
}

public void ActiveReport_PageEnd()
{
    // The first page (page index 0) will inherit the page margins set in ReportStart. 
    // We immediately reset the page margins in the first PageEnd event to ensure subsequent pages get the larger margins.
    if (rpt.Document.Pages.Count == 0)
    {
        rpt.PageSettings.Margins.Top = 1.0f;
        rpt.PageSettings.Margins.Left = 1.0f;
        rpt.PageSettings.Margins.Right = 1.0f;
        rpt.PageSettings.Margins.Bottom = 1.0f;
    }
}

Форумы поддержки ActiveReports бесплатны, активны и контролируются нашей службой поддержки, поэтому они являются отличным местом для того, чтобы задавать вопросы об ActiveReports.

Надеюсь, это поможет,

Scott Willeke
GrapeCity inc.
0 голосов
/ 27 июля 2010

Оказывается, предложенный вами подход работает! Мы представляем документ в формате PDF и RTF. Поля являются правильными при просмотре в формате PDF в Adobe Reader, но не отображаются при просмотре в формате RTF в Word 2010; что-то, чего я не заметил.

Ах, часы потрачены впустую! : P

Это, конечно, поднимает вопрос о том, почему поля не отображаются в версии RTF-in-word ..?

...