1. 程式人生 > >delphi開發學習五:QuickReoprt報表控制元件使用例項

delphi開發學習五:QuickReoprt報表控制元件使用例項

     報表是資料庫應用程式設計中非常重要的一部分,資料庫應用程式通常都要生成報表,並且打印出來。

     在Delphi7.0中,預設情況下沒有直接使用的QuickReport元件,使用時需先進行手工安裝。

     單機選單命令‘’Componet/Install Packages‘’,如下各圖所示:


預設情況下,元件包放置在Borland\Delphi\Bin\目錄下,在對話方塊中單機“Add”按鈕彈出檔案開啟對話方塊,如圖所示。選擇dclqrt70.dpl檔案,確定就可以安裝相應的元件包:

安裝好後,控制元件板上出現了元件 Qreport 面板,如下圖所示,上面存放了在報表設計時要用到的所有控制元件。


1、TQuickRep控制元件

TQuickRep控制元件是設定報表的核心控制元件,主要用來設定報表的外觀。將 TQuickRep 控制元件加入到窗體中,它可以定位到窗體上並擴充套件成全頁的尺寸,它相當於一張列印紙,用放置各個 Band 控制元件和設計元素。

2.TQRBand 控制元件
TQRBand 控制元件是一個錶帶控制元件,它是報表中最基本的控制元件,當為 QuickRep 控制元件設定Bands 屬性時,就會自動新增該控制元件。

3.其他常用報表控制元件
(1)TQRLabel 控制元件,列印顯示文字,Caption 屬性指定輸出文字。事件 OnPrint 提供了變換文字的一種方法,引數 Value 是改變輸出的文字,但是 Caption 屬性不會改變。
(2) TQRDBText 控制元件, 該控制元件可以指定資料的來源, 用來顯示資料庫表格中記錄的欄位,可以是字串欄位、數字欄位、日期欄位和備註欄位的值。可以通過設定 DataSet 屬性和DataField 屬性來指定資料來源。TQRDBText 控制元件的 AutoStretch 屬性可以確定是否需要進行垂直擴充套件,以滿足記錄的需要。

(3)TQRExpr 控制元件,該控制元件用來建立和計算表示式的值,並在報表中列印,一般用在統計資料時比較多。

(4)TQRSysData 控制元件,該控制元件用於列印系統資訊,如報表標題、當前頁號等。其中 Data屬性表示列印系統資訊的種類,共有 7 個選項。

(5)TQRShape 控制元件,用於在報表上列印一些幾何圖形。通過屬性 Shape 設定圖形的形狀,屬性 Pen 設定邊框的風格、模式和顏色。

4、設計報表:

    在這裡依然以delphi開發學習一中建立的工程ADOtest為基礎。以 PERSONNELMG_SYS 資料庫中 BASE_DATA 資料表為例,設計一張完整報表.

 (1)新建一個窗體Treportfrm,在新建的窗體上建立一個 QuickRep1 物件和一個 Adoquery1 物件,並將 QuickRep1的 DataSet 屬性設定為 Adoquery1,在 Adoquery1 的 SQL 屬性裡新增以下語句:select worker_id,worker_name,sex,department_name from base_data,並設定ADOQuery1的connectstring屬為:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=PERSONNELMG_SYS;Data Source=.和ACtive屬性為True;具體如下圖所示:


然後在 QuickRep1 上新增 3 個物件:QRBand1、QRBand2 和 QRBand3,這樣就完成了報表的外架結構。

(2)QRBand1 主要是作為表頭來顯示頭部資訊,因此在 QRBand1 上使用的各控制元件及其屬性設定如下所示:

物件: QRBand1(QRBand 控制元件)            屬性:BandType   屬性值:rbPageHeader

物件:QRLabel1(標籤)                             屬性:Caption        屬性值: 員工名單列表
物件:QRLabel2(標籤)                             屬性: Caption       屬性值: 姓名
物件:QRLabel3(標籤)                             屬性: Caption       屬性值:編號
物件:QRLabel4(標籤)                             屬性: Caption       屬性值:性別
物件:QRLabel5(標籤)                             屬性: Caption       屬性值: 部門名稱
物件:QRSysData1(QRSysData 控制元件)  屬性: Data            屬性值:qrsDateTime

(3)QRBand2 主要用來顯示資料記錄資訊,在 QRBand2 上新增的控制元件物件及其屬性設定如下所示: 

物件:QRBand2(QRBand 控制元件) 屬性: BandType  屬性值:rbDetail
物件:QRDBText1(文字控制元件)      屬性:DataField   屬性值:Worker_name    屬性:DataSet 屬性值: ADOQuery1
物件:QRDBText2(文字控制元件)      屬性:DataField  屬性值:Worker_id            屬性:DataSet 屬性值 :ADOQuery1
物件:QRDBText3(文字控制元件)      屬性:DataField  屬性值:Sex                           屬性:DataSet  屬性值:ADOQuery1
物件:QRDBText4(文字控制元件)      屬性:DataField  屬性值:Department_name 屬性:DataSet 屬性值: ADOQuery1

(4)QRBand3 主要用來存放統計資訊,在 QRBand3 上面新增的控制元件物件及其屬性設定如下所示:

物件:QRBand3          屬性:BandType  屬性值:rbSummary
物件:QRLabel8         屬性:Caption      屬性值:共計人數:
物件:QRSysData3    屬性:Data            屬性值:qrsDetailCount

報表設計好後的窗體佈局如下圖所示:


上面只是設計好了報表的佈局格式,要使最後顯示出統計資訊,還需要新增對應的預覽報表顯示事件。在這裡是藉助在工程ADOtest裡的按鈕報表控制元件應用例項來顯示報表窗體並預覽報表,所以需要在該按鈕事件裡對應新增如下程式碼:Treportfrm.QuickRep1.Preview ;執行如下圖所示:


下面附上例項開發的原始碼下載連結:

http://download.csdn.net/detail/u011846249/9029883