quickreport基本知識

來源:互聯網
上載者:User
以下是各控制項最簡單的使用功能,其他功能依具體的實現而介紹。
    1. TquickRep:帶有座標,作為其他報表控制項(如TQRBand)的容器,它的Band屬性可以自動添加各種類型的TQRBand.
    2. TQRLabel:列印靜態文本(即不是根據資料庫值來改變的),作用象Tlabel , Caption的內容就列印出來的內容。
    3. TQRDBText:列印資料庫欄位值,一個值一行。作用象TDBText.把它的DataSet , DataField分別賦予Table1,Company時,將列印Table1所指向的表的Company欄位的內容。
    4. TQRSysData:列印系統資訊如時間,頁碼,報表頭等。
    5. TQRMemo:非常象TQRLabel,只是它可以列印多行,也是列印待用資料。
    6. TQRRichText:列印RichText格式,能夠串連到一個Form上的RichEdit控制項並列印它的內容,不過必須是32位版本的。
    7. TQRShape:列印方框、圓和垂直、水平線。
    8. TQRImage:列印靜態圖片,包括(BMP,WMF,ICON).
    9. TQRDBImage:從資料庫接收圖片。
    10. TQRBand:用來確定報表的不同位置應該顯示什麼內容,它上面可以放控制項(參見二)。
    11.TQRGoups:Groups可以不限層級的組操作。當你串連了幾個datasets到報表時可以通過Groups成組的對dataset進行操作。

二、 報表的控制項擺放循序

     出現在所有頁上的標題(PageHeader)
              |
     標題(只有首頁才有)(Title)
              |
     所有列的標題(ColumnHeader)
              |
     記錄的內容,一個欄位一列(Detail)
              |
     摘要(最後一頁才有)(Summary)
              |
     出現在所有頁上的頁尾(PageFooter)
  
    這些根據設定不同的Band(不是控制項,一種類型而已,在其上面可以放其他控制項)來定位。總共有六種Band。

三、 一個簡單的例子
    這個例子製作列印一張表的部分欄位名及該欄位資料內容的報表。
    1.建立一個新project
    2.放一個TTable到Form上,DatabaseName設為BCDEMOS,TableName指向Customer表,Active設為true.
    3.放一個TquickRep控制項在Form上,DataSet屬性為Table1.(即要顯示上邊Table1所指向的表的內)。
    4.展開TquickRep的Bands屬性,設HasDetail為true,這時自動增加個detail band(一個TQRBand控制項,故也可以直接放一個TQRBand控制項,BandType屬性設為detail就行了)。
    5.放一個TQRDBText控制項在detail band上面,設DataSet指向Table1,DataField指向Company。第四步是設定在報表的什麼位置顯示什麼類型的資料,而TQRDBText則具體實現。
    6.選TquickRep控制項,按右鍵,選擇”Preview”預覽,應該看到表Customer的欄位Company的所有欄位值。
    到這一個簡單的例子就OK了,程式實現預覽及利用TQRuickRep內建的列印功能只須在Form中加一個按鈕,它的OnClick事件為:QuickRep1->Preview();

四、 一個使用TQRGoups、TQRExpr控制項的報表
    該報表先列出州名,接著列出該州的所有公司及公司總數,一個州列完後空一行(groups中斷),列出新的州名,接著列新州下的所有公司,沒有填州名的公司統一列在Unknown state下面。
    1. 建立一個新project。
    2. 放一個Tquery在Tquickrep上,其SQL屬性為:select * from customer order by State,Company;(即根據州、公司排序),DatabaseName為BCDMome,Active為true.
    3. 放一個TquickRep控制項在Form1上,DataSet為Tquery1.
    4. 放一個TQRGroups控制項在TquickRep上,這時預設為group header。(任何時候當group中斷或更進階別的group中斷,這個header都將列印出來,如果有運算式,根據運算式的值顯示內容。)接著添加一個group footer band,添加時,放一個TQRBand控制項在報表上,串連TQRGroups的FooterBand屬性到這個QRBand,這時這個建立的TQRBand就成為Group Footer. (TQRGroup的一個重要特性是運算式,任何時候當運算式的值變時Group都將中斷,如運算式是按省列出城市名,當前列出廣東省,當屬於該省的城市列完後,運算式值改變,這時Group中斷,接著顯示其他省的城市名。)TQRGroups的expression_r屬性設為Query1.State(根據不同的州來中斷)。
    5. 放一個TQRBand控制項在報表上,BandType為rbDetail.
    6.放一個TQRExpr控制項在group header上面,其expression_r屬性為:if(State<>’’,State,’Unknown state’),即如果公司的州沒填,就歸入Unknown state,否則歸入State.
    7.放三個TQRDBText在Detail上,他們的DataSet都指向Query1,DataField分別指向Company,Contact,Phone.
    8.在放一個TQRExpr控制項在group Footer上面,expression_r為’Customers in’+State+’:’+Str(Count) 作用是在每個州的公司列完後顯示該州總共有多少個公司。
    9.按右鍵選預覽,應該看到不同的州名及其公司和公司公司總數。

五、QuickReport 條件式列印
    可以直接在 TQuickReport 的 OnFilter 事件中寫明條件判斷,OnFilter事件的引數中有一個以 var 宣告的 PrintRecord 布林型態變數,將這個變數設為 True(預設值), 該筆記錄便會印出;反之, 設為False,就不印出這筆記錄.
     procedure TForm1.QuickReport1Filter(var PrintRecord: Boolean);
     begin
       PrintRecord := False;
       if YourTable.FieldByName('WantedField').AsInteger <= 100 then
   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.