2

ページ番号に基づいて、アクティブなレポートのマージンをプログラムで設定しようとしています。

具体的には、最初のページには小さな余白が必要であり(差出人住所のある最上部のテキストボックスが会社のロゴの配置と一致するように)、その後のすべてのページには標準の2.54cmの余白が必要です。

実際のページ番号の検出には問題がある可能性があることを示唆する投稿を読んだので、マージンを設定するための非常に単純なロジックとともにReportStartハンドラーとPageStartハンドラーを使用してみました。

レポートのコードビハインドで、2つのハンドラーとbool値を追加しました。

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

次に、次のように2つのコールバックを追加しました。

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を使用します。

ありがとうございました!

4

2 に答える 2

4

プログラムでは、単位はCMではなくインチです:)設計時の設定は、設計者に表示される内容にのみ影響します。

以下は私のために働いた:

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.
于 2010-07-26T18:12:35.400 に答える
0

結局のところ、あなたが提案したアプローチは機能します!ドキュメントをPDFとRTFの両方にレンダリングします。Adobe ReaderでPDFとして表示した場合、余白は正しいですが、Word2010でRTFとして表示した場合は表示されません。私が気づかなかった何か。

ああ、何時間も無駄になりました!:P

もちろん、これは、なぜマージンがRTF-in-wordバージョンで表示されないのかという疑問を提起します。

于 2010-07-26T22:46:40.830 に答える