程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ActiveReports工作總結9——打印參數設置

ActiveReports工作總結9——打印參數設置

編輯:.NET實例教程

AR默認的話,報表的紙張類型是就是Custom,寬高根據主模版的大小來。

用戶可以通過AR自帶的打印組件打印帳票。在popForm上,用於可以選擇打印紙張等。


<!--[endif]-->

<!--[if !vml]-->
<!--[endif]-->

 

1,首先,先要弄清一個概念,AR報表的紙型和打印機打印出來的紙型是完全不同的概念。

1),AR報表的紙型是這張帳票的實際大小,不會隨著打印機的紙型而變化的。

2),打印機打印出來的紙型,僅僅是個用來放報表的容器而已。

形象點說:AR紙型的大小就相當於工廠生產出來的產品的大小;而打印執行僅僅是用來放這個產品的外包裝而已。

所以,對於A4橫的AR報表來說,用A3來打印的話,雖然打印出來的紙大了,但報表本身的大小不會變。

假如用A5來打印的話,打印出來的紙變小了,但由於報表本身沒變,所以1頁會打印不下,可能有部份內容顯示不出來。

 

本節講討論如何設置AR報表的紙型。

 

2,AR報表的一些主要打印參數,具體對照圖來看:

<!--[if !vml]-->
<!--[endif]-->

 

(1), AR報表的紙型,如下進行設置:

rpt.PageSettings.PaperKind = Printing.PaperKind.A4

rpt.PageSettings.Orientation = DataDynamics.ActiveReports.Document.PageOrIEntation.Portrait

該AR報表的紙型是A4,方向是橫。

假如不進行設置的話,默認PaperKind就是0(Custom),橫縱沒有(應該是-1)。

AR紙型一般是可以有選項讓用戶可以設置的,這個在我們項目中已經寫在Form基類中了。不過我們有些特殊帳票是禁用該選項的。

(2),當前紙型下的寬高

假如當前紙型是A4橫的話,寬高如下:

rpt.PageSettings.PaperWidth=8.267716

rpt.PageSettings.PaperHeight=11.692914

 

恩,仔細看看,沒錯,PaperWidth竟然比PaperHeight小。

你把紙型切換成A4 縱看看,寬高還是這樣不變。

不知道這算不算AR的bug,PaperWidth和PaperHeight是以“縱”為標准的,假如是“橫”帳票的話,求寬高時,不要忘記反一下。

 

(3),上下左右打印的余白

不管哪種紙型,默認余白大小如下:

   rpt.PageSettings.Margins.Top = 1

   rpt.PageSettings.Margins.Bottom = 1

   rpt.PageSettings.Margins.Left = 1

   rpt.PageSettings.Margins.Right = 1

可以進行相應的修改,我們項目中,把余白的修改開放給了用戶。

 

3,實際帳票內容的寬度設定。恩,這個是難點!

實際內容的寬度就是:PrintWidth

上一節中,我的PrintWidth設置如下:

        ''Set PrintWidth

        Me.PrintWidth = Me.subReport2.Left + Me.subReport2.Width

實際顯示的寬度,不管subReport2怎麼變,總歸把它顯示出來,不管紙張類型是什麼。

如果me.PrintWidth甚至比紙張的寬度還要大,則會顯示紅線,實際打印出來會以紅線分割打印2張紙。

 

來舉例:

       1)我們把PrintWidth正好設置成紙型寬度(雖然是PaperHeight,但的確是寬)減去左右余白,看看效果,不錯,效果很好。

Me.PrintWidth = Me.PageSettings.PaperHeight - Me.PageSettings.Margins.Left - Me.PageSettings.Margins.Right

<!--[if !vml]-->
<!--[endif]-->

 

       2)我們把PrintWidth設成剛剛的一半,效果會咋樣呢?有一半的內容沒顯示出來。

Me.PrintWidth = (Me.PageSettings.PaperHeight - Me.PageSettings.Margins.Left - Me.PageSettings.Margins.Right) / 2

<!--[if !vml]-->
<!--[endif]-->

 

       3)那我們把PrintWidth設成(1)的2倍,由於超過了紙張的寬度,所以出現紅線了。

<!--[if !vml]-->
<!--[endif]-->

 

看了這麼多例子,PrintWidth到底應該這麼設置啊?

一種就是像例1那樣,設置成紙型寬度減去左右余白。這樣會有一個問題,有些分欄帳票分欄數過多,導致一頁打不下,多余的部份會不顯示出來。假如用戶不介意或就是要求這樣,那就用這種發法。

第二種就是把PrintWidth設成模版內實際內容的寬度。就像上節例子那樣

Me.PrintWidth = Me.subReport2.Left + Me.subReport2.Width

這樣,萬一PrintWidth超過了紙型寬度的話,出紅線。

 

我們項目中一般使用的方法是2者的結合體:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved