2010-07-26 127 views
1

我試圖以編程方式設置基於頁碼的活動報表頁邊距。頁面特定頁邊距設置AR3

具體來說,第一頁需要小的邊距(以便返回地址的頂部文本框與公司徽標的對齊相匹配),並且之後的每個頁面應該具有標準的2.54cm邊距。

我讀過的帖子提示檢測實際的頁碼可能有問題,所以我嘗試使用ReportStart和PageStart處理程序以及一些非常簡單的邏輯來設置頁邊距。

在代碼隱藏的報告,我加了兩個處理程序和布爾值:

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

這似乎並不對利潤率有任何影響。這種方法是錯誤的嗎?或者是對象屬性是一個廣泛的報表?

歡迎任何有關替代方法的建議。

使用Activereports3,版本5.2.1013.2。

謝謝!

+0

我也嘗試用this.CurrentPage.Margins.Top = 2.54F取代this.PageSettings.Margins.Top = 2.54F,但這也行不通... ... – user246091 2010-07-26 01:09:55

回答

3

以編程方式單位爲英寸而不是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; 
    } 
} 

The ActiveReports Support Forums是免費的,積極的,所以他們是一個偉大的地方詢問的ActiveReports問題,通過我們的支持團隊監控。

希望這有助於

Scott Willeke 
GrapeCity inc. 
+0

英寸?...愚蠢的美國人! ; d。謝謝你的回覆。我很確定我在早些時候嘗試了你的建議,但無濟於事!如果它呈現爲RTF或PDF,它會有所作爲嗎? In將會在我們的應用程序中的不同位置呈現出來...... – user246091 2010-07-26 21:21:45

+0

也許它也會因爲上一頁開始的文本框繼續到第二個...從我讀過的內容而變得複雜,在某些意義上,元素的定位似乎是絕對的。顯然,我並不清楚主動報告的功能。 :P – user246091 2010-07-26 21:29:58

+0

我試過你的方法,但沒有任何區別。每頁上的邊距都是一樣的。這讓我難過。它真的好像應該工作...事實上我懷疑其他的東西是阻止邊距顯示在第二頁上。此外,我在VS 2010中進行了這些更改...可能會導致此舊版AR的問題出現問題嗎? 「報告」菜單甚至無法訪問。 :\ – user246091 2010-07-26 22:00:31

0

事實證明,你的建議確實可行的辦法!我們將文檔轉換爲PDF和RTF格式。在Adobe Reader中查看PDF格式時,頁邊距是正確的,但在Word 2010中不會顯示爲RTF格式;我沒有注意到的東西。

Ach,浪費小時! :P

這當然引發了爲什麼在RTF-in-word版本中不顯示邊距的問題。

+0

我不確定他們爲什麼不能在RTF/Word中工作。也許我們不會把它們傳遞給Word。他們可以很容易地修復。發送一封電子郵件到[email protected]與樣本,我應該幫忙。隨意引用這個SO線程。 – 2010-07-26 22:52:18