fast report 的使用說明

1. TfrxDBDataset  

    

      TfrxUserDataset 數據存取元件。

       FastReport 使用這些元件讀取及參考數據庫的字段,這兩個元件都源於 “TfrxDataSet” 並繼承其大部分的功能。 TfrxUserDataSet 元件允許構建未連接到數據庫的報表,而由其它來源接收數(據如:數列、文件等)。在此同時,程序員僅需提供瀏覽此數據集的功能,資料接收並非由此元件執行,而是用其它的方法(例如,經由“TfrxReport.OnGetValue”事件)。

 

     TfrxUserDataSet 元件有下列的屬性: 

                (1)   property RecNo: Integer readonly;目前記錄編號,首筆的記錄編號是“0”

                (2)   property Enabled: Boolean default True;定義此 元 件是否可在designer 裏面使用。

              

                (3)   property RangeBegin: TfrxRangeBegin default rbFirst;數據導航(navigation)的起點。

                      下列的值可以使用: rbFirst – 從數據的第一筆記錄開始。rbCurrent – 從當前的記錄開始

                (4)   property RangeEnd: TfrxRangeEnd default reLast;數據導航(navigation)的起點。

                      下列的值可以使用: reLast – 直到數據結束。ReCurrent – 直到目前的記錄。reCount – 依“RangeEndCount” 屬性而                  定。

                (5)   property RangeEndCount: Integer;數據集中的數據個數,此功能只在“RangeEnd”屬性等於reCount 有效。

                (6)   property UserName: String;符號名稱。在報表設計環境(Designer)下,將被顯示於DataSet 的下方。

                (7)   property OnCheckEOF: TfrxCheckEOFEvent; TfrxCheckEOFEvent = procedure(Sender: TObject; var Eof: Boolean)of                   object; 此事件在數據集的尾端時,Eof 參數將返回True。

                (8)   property OnFirst: TNotifyEvent;數據集移至第一筆的位置時,會觸發此事件。

                (9)   property OnNext: TNotifyEvent;數據集移至下一筆的位置時,會觸發此事件。

                (10) property OnPrior: TNotifyEvent;數據集移至上一筆的位置時,會觸發此事件。

 

2.     TfrxDBDataSet 元件用來連接以TDataSet, TTable 及TQuery 爲基類的數據庫元件,有關數據的導航及字段的參考都是自動的,程序員不需特殊的設定。

        除上述屬性外,該元件有下列的屬性:

       (1)   property CloseDataSource: Boolean default False;報表創建完成後,關閉數據庫。

       (2)   property OpenDataSource: Boolean default True;在報表創建之前打開數據庫。

       (3)   property FieldAliases: TStrings;數據集字段的符號名稱(別名)。

      (4)    property DataSet: TDataSet;

      (5)    property DataSource: TDataSource;連結至TDataSet 或TDataSource 類型的元件。

      (6)    property OnClose: TNotifyEvent;當關閉數據集時觸發此事件。

      (7)    property OnOpen: TNotifyEvent;當打開數據集時觸發此事件

 

3.    TfrxDesigner TfrxDesigner 元件是報表設計器,當使用此元件,你的工程文件就可以使用報表設計器,此元件它只包含一些報表設計器的設定,當加入”frxDesign” 單元到uses 清單中,就表明與報表設計器連接上了。

        此元件包含下列的屬性:

        (1)   property CloseQuery: Boolean default True;定義結束設計報表是否詢問儲存報表之用。

        (2)   property OpenDir: String;打開報表的預置數據目錄

        (3)   property SaveDir: String;儲存報表的預置數據目錄。

        (4)   property Restrictions: TfrxDesignerRestrictions;報表設計環境下,限制不同的報表操作標識(flag),此標識包含單一或混合數據值: drDontInsertObject – 禁止插入物件drDontDeletePage – 禁止刪除頁面drDontCreatePage – 禁止建立新的頁面 drDontChangePageOptions – 禁止修改頁面屬性drDontCreateReport – 禁止建立新報表 drDontLoadReport – 禁止載入報表drDontSaveReport – 禁止儲存報表 drDontPreviewReport – 禁止預覽報表drDontEditVariables – 禁止編輯變量 drDontChangeReportOptions – 禁止修改報表屬性

       (5)    property OnLoadReport: TfrxLoadReportEvent; TfrxLoadReportEvent = function(Report: TfrxReport): Boolean of object; 此事件發生在載入報表之時。利用此事件,你可以從數據庫載入報表。

      (6)    property OnSaveReport: TfrxSaveReportEvent; TfrxSaveReportEvent = function(Report: TfrxReport;SaveAs:Boolean): Boolean of object; 此事件發生在儲存報表之時。利用此事件,你可以將報表儲存於數據庫中。

      (7)   property OnShow: TNotifyEvent;此事件發生在啓動報表設計環境時。

 

4.   TfrxPreview 此元件專供建立自定義報表合預覽窗口使用。

      (1)   procedure AddPage;加入空白頁面到報表末端。

      (2)   procedure DeletePage;刪除當前頁。

      (3)   procedure Print;打印報表。

      (4)   procedure LoadFromFile;顯示文件載入窗口。

      (5)   procedure LoadFromFile(FileName: String);載入指定的文件。

      (6)   procedure SaveToFile;顯示文件儲存窗口。

      (7)   procedure SaveToFile(FileName: String);儲存文件到指定的文件名稱

      (8)   procedure Edit;載入當前頁至設計模式供編輯使用。

      (9)   procedure Export(Filter: TfrxCustomExportFilter);使用指定的導出過濾器導出報表。

      (10) procedure First;第一頁。

      (11) procedure Next;下一頁。

      (12) procedure Prior;上一頁

      (13) procedure Last;最後一頁。

      (14) procedure PageSetupDlg;顯示頁面設定窗口。

      (15) procedure Find;顯示文字搜尋窗口。

      (16) procedure FindNext;繼續找下一個。

      (17) procedure Cancel;取消創建報表。

      (18) procedure Clear;清除報表。

      你可以使用下列屬性:

       (1)   property PageCount: Integer readonly;報表頁數。

       (2)   property PageNo: Integer;目前報表頁碼(起始值爲1)。要移至其它頁面,指定此屬性的值即可。

       (3)   property Tool: TfrxPreviewTool;選取工具。

       (4)   property Zoom: Extended;顯示比例,“1” 代表100% 。

       (5)   property ZoomMode: TfrxZoomMode;顯示模式,可以的顯示模式如下:zmDefault – 預置值,顯示比例根據“Zoom” 屬性而定zmWholePage – 整頁模式zmPageWidth – 與頁面寬度相同 zmManyPages – 一屏顯示多頁

      (6)   property OutlineVisible: Boolean;是否顯示報表大綱(樹狀結構)。

      (7)   property OnPageChanged: TfrxPageChangedEvent;目前頁面要改變時,此事件將被觸發。

 

5.   TfrxBarcodeObject  TfrxOLEObject   TfrxChartObjectTfrxRichObject TfrxCrossObject    TfrxCheckBoxObject     TfrxGradientObject 可在報表內部使用的物件,這些元件自己沒做任何事情,它們會自動將元件的單元加入uses 清單,加入你打算打開一份報表,此功能會自動被加入報表,未包括此物件至工程文件的話,打開報表時將會發生錯誤。 TfrxDialogContols 附加項(add-in) 物件的集合,可用於報表內的對話窗口,它包含下列元件:button,edit box, list box 等。此元件自己不會執行任何事,加入此元件“frxDCtrl”將會自動加入“Uses”清單。 TfrxBDEComponents BDE 數據庫元件,數據庫界面採用BDE(Borland Database Engine)時,工程文件必須加入此元件。 TfrxADOComponents ADO 數據庫元件,數據庫連接採用ADO(Advance Data Object)時,工程文件必須加入此元件。 TfrxIBXComponents Interbase 數據庫元件,數據庫採用IBX 連接Interbase 後臺數據庫時,工程文件必須加入此元件。上述數據庫元件,可被使用在報表的對話窗口上,它包括下列的元件: “Database”,“Table” 及“Query” 。這些元件本身並不做任何事;它們只會將元件隸屬的單元自動加入uses 清單中。 Working with TfrxReport component Loading and saving a report 存取報表報表定義表格與工程文件的表格儲存在同一個文件(.DFM),在大部分的情況下,並不需要額外的操作步驟,因此載入報表便相當簡單。假如你要將報表儲存在文件或數據庫的BLOB 字段,你必須使用“TfrxReport”提供的方法來載入及儲存報表。 function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean = False): Boolean; 載入指定的報表,假如第二個參數的值等於”True ” 且指定的文件不存在,然後它會產生一個例外。假如文件載入成功,它返回“True”。 procedure LoadFromStream(Stream: TStream);從數據流(stream)載入報表。 procedure SaveToFile(const FileName: String);儲存報表至指定的文件名。 procedure SaveToStream(Stream: TStream);儲存報表至數據流(stream) 。報表預置的後綴名稱爲“FR3”。範例: frxReport1.LoadFromFile('c:/1.fr3'); frxReport1.SaveToFile('c:/2.fr3'); Designing a report 設計報表通過“TfrxReport.DesignReport”方法調用報表設計器(reportdesigner),要具有設計報表的功能,你必須在工程文件中加入“TfrxDesigner”元件,或在uses 加入“frxDesgn”單元。範例:frxReport1.DesignReport; Running a report 執行報表應用下列兩個“TfrxReport”元件的方法啓動報表:procedure ShowReport(ClearLastReport: Boolean = True); 啓動報表並顯示結果在瀏覽窗口。假如“ClearLastReport”參數等於“False”,然後報表將會清前一份報表的末端,否則前一份報表的內容將會被清除ど柚。function PrepareReport(ClearLastReport: Boolean = True):Boolean; 啓動報表,但不開啓預覽窗口,參數用法同“ShowReport”方法,假如報表建立成功,它返回“True”。在大部分的情況下,採用第一種方法比較方便,當報表建立的過程中,它會立刻顯示預覽窗口。當我們要把報表加入上一份報表的後面時,“ClearLastReport”參數是非常方便的技巧在批次報表打印時特別有效)。範例:frxReport1.ShowReport; Previewing a report 預覽報表在報表預覽窗口顯示報表有兩種方式:不管是調用“TfrxReport.ShowReport”方法(前面已提及)或使用“TfrxReport.ShowPreparedReport”方法。在第二種狀況,報表創建的過程不會執行,但是報表的結果會顯示於屏幕。這個意思是說,你應該使用“PrepareReport”方法創建報表或載入先前已經建立的報表。範例: if frxReport1.PrepareReport then frxReport1.ShowPreparedReport; 在這個案例中,報表創建完成在先,然後顯示報表於瀏覽窗口。創建大型的報表可能耗費許多時間,那也是爲什麼使用“ShowReport”方法會比“PrepareReport/ShowPreparedReport” 來的好的原因,我們指定“TfrxReport.PreviewOptions” 屬性,指定預覽的參數。 Printing a report 打印報表在大部份的情況,你會從預覽窗口打印報表。要手動打印報表,你應該使用“TfrxReport.Print”方法,例如:frxReport1.Print; 在此同時,你可以設定打印對話窗口的參數。你可以從“TfrxReport.PrintOptions”屬性指定打印的預置值及取消顯示打印窗口。 Loading and saving a finished report 存取已完成的報表它可以從預覽窗口執行,這也可以手動的用“TfrxReport.PreviewPages”方法執行: function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean = False): Boolean; procedure SaveToFile(const FileName: String); procedure LoadFromStream(Stream: TStream); procedure SaveToStream(Stream: TStream);指定參數與TfrxReport 對應的方法類似,報表文件後綴名必須是”FP3” 。例: frxReport1.PreviewPages.LoadFromFile('c:/1.fp3'); frxReport1.ShowPreparedReport;注:當已完成報表載入後,預覽報表必須通過 “ShowPreparedReport”方法來執行。 Exporting a report 導出報表它可從預覽窗口執行,此項功能也可以用“TfrxReport.Export”方法來執行,在此方法的參數中,你必須指定要使用的導出過濾元件:如:frxReport1.Export(frxHTMLExport1);導出過濾元件必須是可用的(你必須將它放入工程文件的表單上)且設定正確。 Creating a custom preview window 建立自定義預覽窗口 FastReport 顯示報表於標準的預覽窗口。假如爲了某種理由它無法滿足你,你可以使用自定義的預覽窗口。爲此,FastReport 的“TfrxPreview” 元件於是誕生了,要顯示報表這個元件必須連接到“TfrxReport.Preview”屬性。 Building a composite report (batch printing) 建立複合報表(批量打引) 在某些情況下,我們必須一次打印數份報表,或封裝及實現多份報表於同一個預覽窗口。要執行這項工作,在FastReport 中有多個工具,允許建立一份新的報表,置於另一份已存在的報表末端,«TfrxReport.PrepareReport»方法有此«ClearLastReport», «True»,此參數定義是否清除前一份已建立的報表。下列的程序碼示範如何從兩個報表定義文件,批次建立一份報表: frxReport1.LoadFromFile('1.fr3'); frxReport1.PrepareReport; frxReport1.LoadFromFile('2.fr3'); frxReport1.PrepareReport(False); frxReport1.ShowPreparedReport; 我們載入第一個報表並在後臺處理報表(不顯示),然後我們載入第二份報表到同一«TfrxReport»物件,並置參數 «ClearLastReport» 的值爲假(False)建立報表。此功能允許第二份報表的結果接在第一份報表的後面。最後,我們將兩份報表顯示在同一個預覽窗口中。 Numbering of pages in a composite report 複合報表中的頁數你可以使用 «Page», «Page#», «TotalPages» 及 «TotalPages#» 系統變量顯示頁碼或總頁數。在複合式報表,這些變量代表的意義如下:Page -目前報表的頁碼Page# -批次報表的頁碼TotalPages -目前報表的總頁數(報表必須設定爲two-pass)TotalPages# -批次報表的總頁數 Combination of pages in a composite report 複合報表的合併頁如上所述,當打印時,報表設計的屬性 «PrintOnPreviousPage»可以利用前一頁的可用空間打印下一頁的內容。在複合報表中,它允許你在前一份報表最後一頁的可用空間上建立一份新的報表,要執行此功能,必須在每一份連續報表的第一個設計頁面啓動屬性«PrintOnPreviousPage»。 Interactive reports 交互式報表在交互式報表中,我們可以在預覽窗口定義任何報表物件對鼠標按下的反應。例如,使用者選擇數據列,然後做一份新的報表,顯示選取列的明細數據。任何報表都可以成爲交互式報表,要執行此操作,你只需建立TfrxReport.OnClickObject 事件處理程序。下面是此事件處理的範例: procedure TForm1.frxReport1ClickObject(Page: TfrxPage; View: TfrxView; Button: TMouseButton; Shift: TShiftState; var Modified: Boolean); begin if View.Name = 'Memo1' then ShowMessage('Memo1 contents:' + #13#10 + TfrxMemoView(View).Text); if View.Name = 'Memo2' then begin TfrxMemoView(View).Text := InputBox('Edit', 'Edit Memo2 text:', TfrxMemoView(View).Text); Modified := True; end; end; 在 «OnClickObject» 事件處理程序中,你可以執行下列工作:-修改物件或頁面的內容,但前提是«Modified»屬性必須被指定。-調用 «TfrxReport.PrepareReport» 方法重新建立報表。在此範例中,點選 «Memo1» 物件將顯示此物件的內容,當點選«Memo2,»將顯示Dialog 窗口,物件的內容可於此窗口內被修改。設定«Modified» 標識爲«True» 允許保留及顯示修改後的內容。同樣的方法,它也可被定義爲一個單擊,有不同的反映。例如,執行一個新的報表。下列的註釋是必要的。在中,在一個預覽窗口僅顯示一個報告,由一個元件組成(不像FastReport 2.x 版)。這就是運行一個報告,其它 TfrxReport 物件,必須刪除的原因。要給使用者按下物件一個提示,我們可以在鼠標指針移至物件上方時變更鼠標指針顯示。要達到此目的,請在報表設計環境下,選取想要的物件,並設定不同於預置的Cursor 屬性即可。可單擊(clickable)物件有許多詳細的定義規則。在簡單的報表中,可以隨意定義目錄(contents)中物件的名稱。可是,在複雜報表的報表中卻不行。 例如,創建逐條的報表在有序的數據中。一個用戶單擊目錄爲“12”的«Memo1»物件。在該物件上數據將怎樣排序?這就是你該明確知道主鍵值排列順序的原因。FastReport 可分配一個包含任何數據(我們的例子中是主鍵值的數據)的字符串到任何報表的物件。此字符串儲存在 «TagStr» 屬性中。讓我們以FastReport 的範例(FastReportDemo.exe 內的【Simple list】)來說明,這是一家公司的客戶明細,打印的內容包括【client’s name】,【address】 【contact person】 等字段,數據來源是DBDEMOS 演示數據庫的“Customer.db”數據表,該數據表有一個主鍵值【CustNo】字段,它並未輸出在報表。我們的工作是決定點下的物件是哪一筆記錄,然後取得該記錄的主鍵值。要執行該工作,必須在Master Data 區域所有物件的«TagStr» 屬性在報表建立期間, «TagStr» 屬性的內容會以相同的方法被重新計算,當字符物件的內容被計算,所有用到此變量的值將會被取代。假如主鍵值(Primary Key) 是複合字段(它包含多個字段), «TagStr» 屬性的內容可以是下列的寫法:[Table1."Field1"];[Table1."Field2"] 建立報表後, «TagStr» 屬性的值包含'1000;1' , 這樣就不難取得鍵值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章