




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、使用tfrxreport 組件工作1、加載并存儲報表默認(rèn)情況下,報表窗體同項目窗體構(gòu)存儲在同一個dfm文件中。多數(shù)情況下,無須再操作,因而你就不必采用特殊方法加載報表。如果你決定在文件中存儲報表窗體或者是數(shù)據(jù)庫的blob字段(他提供了非常大的彈性,你能夠在非編譯程序中修改),你必須使用“tfrxreport”提供的加載和存儲方法。function loadfromfile(const filename: string; exceptionifnotfound: boolean = false): boolean;從一個給定名字文件中加載報表。如果第二個參數(shù)等于“true”并且文件沒找到,那
2、么他會觸發(fā)一個異常。如果文件加載成功,他返回“true”。procedure loadfromstream(stream: tstream);從流中加載報表。procedure savetofile(const filename: string);用特殊名稱文件存儲報表。procedure savetostream(stream: tstream);把報表存在流中。例如:pascal:frxreport1.loadfromfile('c:1.fr3');frxreport1.savetofile('c:2.fr3');c+:frxreport1->load
3、fromfile("c:1.fr3");frxreport1->savetofile("c:2.fr3");2.設(shè)計報表通過“tfrxreport.designreport”方法調(diào)用報表設(shè)計器。你必須在你的項目中包含報表設(shè)計器(必要條件是:要么使用“tfrxdesigner”組件,要么增加“frxdesgn”單元到uses列表)“desigreport”方法接受兩個默認(rèn)參數(shù):procedure designreport(modal: boolean = true; mdichild: boolean = false);modal參數(shù)決定設(shè)計器是否被
4、模態(tài),mdichild參數(shù)允許把設(shè)計器窗體作為一個mdi子窗體。例如:frxreport1.designreport;3.運(yùn)行報表應(yīng)用下面兩個“tfrxreport”方法中的一個啟動報表:procedure showreport(clearlastreport: boolean = true);啟動報表并在預(yù)覽窗體中顯示。如果“clearlastreport”參數(shù)等于“false”,報表將會增加先前的一個報表結(jié)果,否則清除前一個報表結(jié)構(gòu)。function preparereport(clearlastreport: boolean = true): boolean;啟動報表,沒有打開預(yù)覽窗體,
5、參數(shù)賦值與“showreport”方法同名。如果報表構(gòu)造成功,他返回“true”。多數(shù)情況下,使用第一種方法更為方便一些。在報表被構(gòu)造的同時,他會立刻顯示一個預(yù)覽窗體。當(dāng)需要增加另一個報表到前一個報表中的時候,“clearlastreport”參數(shù)顯得方便些。(此類技術(shù)用于批量報表打?。@纾篺rxreport1.showreport; 4.預(yù)覽報表使用兩種途徑顯示一個報表是可能的:兩者都是調(diào)用“tfrxreport.showreport”方法(先前描述過了),或者使用“tfrxreport.showpreparedreport”方法來幫助實現(xiàn)。在第二種情況下,報表構(gòu)造沒有被執(zhí)行,但顯示了一
6、個完成的報表。也就是說,你要么在“preparedreport”方法幫助下構(gòu)造他,要么在構(gòu)造前從文件中加載報表(查看“加載存儲完成的報表”)例如:pascal:if frxreport1.preparereport then frxreport1.showpreparedreport;c+:if(frxreport1->preparereport(true) frxreport1->showpreparedreport(); 在這種情況下,報表構(gòu)造器先被完成了,并顯示在預(yù)覽窗體中。構(gòu)造一個龐大的報表可能要花費(fèi)很多時間,那就是為什么使用“showreport”非等時同步方法會好于“p
7、reparereport/showpreparedreport”方法。你可以通過“tfrxreport.previewoptions”屬的缺省值設(shè)定預(yù)覽參數(shù)值。(這句翻譯的不夠好,請參考原文)原文參考:in this case, report construction is finished first, and after that it is displayed in the preview window. construction of a large report can take a lot of time, and that is why it is better to use t
8、he “showreport anisochronous” method, than the “preparereport/showpreparedreport” one. one can assign preview settings by default via the “tfrxreport.previewoptions” property.5、打印報表大多數(shù)情況下,你可以從預(yù)覽窗體打印報表。要人工打印報表,你應(yīng)該使用“tfrxreport.print”方法,例如:frxreport1.loadfromfile(.);frxreport1.preparereport;frxreport1
9、.print;同時,你可以在顯示的打印對話框中設(shè)置打印參數(shù),你也可以使用默認(rèn)設(shè)定值。取消打印對話框,請參考“tfrxreport.printoptions”屬性幫助6.載入并存儲報表這個功能可以在預(yù)覽窗口中執(zhí)行。也可以使用手工方法執(zhí)行,幫助參考“tfrxreport.previewpages”方法: function loadfromfile(const filename: string; exceptionifnotfound: boolean = false): boolean; procedure savetofile(const filename: string); procedure
10、 loadfromstream(stream: tstream); procedure savetostream(stream: tstream);賦值和參數(shù)化類似與tfrxreport相應(yīng)的方法。文件包含了完成的報表,默認(rèn)情況下以“fp3”為擴(kuò)展名。例如:pascal:frxreport1.previewpages.loadfromfile('c:1.fp3');frxreport1.showpreparedreport;c+:frxreport1->previewpages->loadfromfile("c:1.fp3");frxreport
11、1->showpreparedreport();注意,完成的報表加載完畢后,預(yù)覽方法是通過“showpreparedreport” 方法執(zhí)行的。7.導(dǎo)出報表他可以從預(yù)覽窗口中執(zhí)行。也可以手動操作,通過“ffrxreport.export”方法,及這個方法中的參數(shù),你可以導(dǎo)出你想要導(dǎo)出的文件類型:frxreport1.export(frxhtmlexport1);導(dǎo)出過濾組件必須是有效的(你必須把他們放到你項目中的窗體上)并調(diào)整正確。the export filter component must be available (you must put it on the form of y
12、our project) and be adjusted correctly.8.創(chuàng)建自定義預(yù)覽窗體fastreport在標(biāo)準(zhǔn)的預(yù)覽窗口中顯示報表。如果因為某些原因而不適合你,你可以創(chuàng)建一個自定義預(yù)覽窗體。為了這個目的,需要設(shè)計fastreport組件面板中的“tfrxreport”組件。要顯示報表,tfrxreport.preview方法應(yīng)該連接到這個組件。在使用tfrxpreview組件的時候,有兩個典型的問題。他不會處理按鍵(箭頭,pgup,pgdown等等)和鼠標(biāo)滾輪(如果有的話)。要讓tfrxpreview同按鍵工作,設(shè)置焦點給他(他是可以做到的,例如,在窗體的onshow事件句柄中
13、)frxpreview.setfocus;要讓tfrxpreview同鼠標(biāo)滾輪工作,你必須創(chuàng)建onmousewheel事件句柄,并且調(diào)用tfrxpreview.mousewheelscroll方法。procedure tform1.formmousewheel(sender: tobject; shift: tshiftstate; wheeldelta: integer; mousepos: tpoint; var handled: boolean);begin frxpreview1.mousewheelscroll(wheeldelta);end;9.建立復(fù)合報表(批量打?。?在某些情況
14、下,需要立刻組織幾個報表打印,或者在一個打印預(yù)覽窗體中封裝并呈現(xiàn)幾個報表。要執(zhí)行這些,在fastreport中有些工具能夠允許建立一個新的報表附加在一個已經(jīng)存在的報表上?!皌frxreport.preparereport”方法中有一個選項“clearlasreport”布爾類型參數(shù),默認(rèn)情況下他等于true,這個參數(shù)定義了是否有必要在建立報表時清除前一個報表。下面的方法展示了如何從兩個報表中建立一個批量報表:pascal:frxreport1.loadfromfile('1.fr3');frxreport1.preparereport;frxreport1.loadfromfi
15、le('2.fr3');frxreport1.preparereport(false);frxreport1.showpreparedreport;c+:frxreport1->loadfromfile("1.fr3");frxreport1->preparereport(true);frxreport1->loadfromfile("2.fr3");frxreport1->preparereport(false);frxreport1->showpreparedreport(); 我們加載并建立第一個報表,
16、但并沒有顯示他。然后我們加載第二個報表到同一個tfrxreport對象,并使用“clearlastreport”參數(shù),讓他等于false。這就允許第二個報表附加在先前建立的報表之后。接下來,我們在預(yù)覽窗口中顯示一個完成的報表。9.1 復(fù)合報表中的頁數(shù) 你可以使用“page”,“page#”,“totalpages”和“totalpages#”系統(tǒng)變量顯示頁數(shù)或總頁數(shù),在復(fù)合報表中,這些變量以下面的方式工作:page - 當(dāng)前報表頁數(shù)page# - 批量報表頁數(shù)totalpages - 當(dāng)前報表總頁數(shù)(報表必須兩遍)totalpages# - 批量報表總頁數(shù)9.2 合并符合報表頁數(shù) 正如上面所說
17、的,報表設(shè)計頁中的“printonprevouspage”方法讓你在打印報表的時候使用前一頁的剩余空間接合報表。在復(fù)合報表中,允許你在前一個報表的最后一頁的剩余空間創(chuàng)建一個新的報表。要執(zhí)行這個,要使能每一個連續(xù)報表的第一個設(shè)計頁“printonpreviousepage”屬性 10.交互報表 在交互報表中,你可以在預(yù)覽窗口定義任意報表對象的鼠標(biāo)單擊反應(yīng)。例如,一個用戶能夠單擊數(shù)據(jù)線,結(jié)果運(yùn)行一個帶有選擇線的明細(xì)數(shù)據(jù)。 任何報表都能交互。要執(zhí)行他,你僅僅需要創(chuàng)建tfrxreport.onclickobject事件句柄。下面代碼是這個事件句柄的示例:pascal:procedure tform1.
18、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).tex
19、t := inputbox('edit', 'edit memo2 text:', tfrxmemoview(view).text); modified := true; end;end;c+:void _fastcall tform1:frxreport1clickobject(tfrxview *sender, tmousebutton button, tshiftstate shift, bool &modified) tfrxmemoview * memo; if(memo = dynamic_cast <tfrxmemoview *>
20、; (sender) if(memo->name = "memo1") showmessage("memo1 contents:nr" + memo->text); if(memo->name = "memo2") memo->text = inputbox("edit", "edit memo2 text:", memo->text); modified = true; 在對象的單擊事件句柄上,你可以做如下事情:- 修改一個對象或頁的內(nèi)容,傳遞句柄(結(jié)果,被修改的
21、將被特殊標(biāo)記,因此修改的內(nèi)容應(yīng)該引起重視);- 由于使用重構(gòu)或重新建立報表,調(diào)用tfrxreport.preparereport方法在此例中,點擊名字為memo1對象的結(jié)果顯示這個對象內(nèi)容的消息。當(dāng)點擊memo2是顯示一個對話框,這個對象的內(nèi)容可能被修改。設(shè)置modified標(biāo)志為true,允許保持和顯示變更。 同樣的方法,單擊事件可以被定義成不同的響應(yīng)。例如,運(yùn)行一個新報表。如下注釋是必要的。在fastreport3版本中,一個報表組件可以在一個預(yù)覽窗口中顯示唯一的報表(不像fastreport2.x版本)。那就是為什么一個報表預(yù)覽窗也會在分開的對象中運(yùn)行一個報表,或者是同一個對象,但當(dāng)前報
22、表必須被抹除。 關(guān)于給終端用戶一個可單擊對象提示定位,在預(yù)覽窗口中,鼠標(biāo)經(jīng)過一個可單擊對象的時候,我們可以修改鼠標(biāo)的光標(biāo)。要做到這些,在報表設(shè)計器上選擇一個要設(shè)計的對象并設(shè)置他的cursor屬性為不同于crdefault的某個值。更多的細(xì)節(jié)涉及到定義的單擊對象。在簡單報表中,可以依照對象的名字或他的內(nèi)容來定義。然而,這就不能更多的執(zhí)行可修改的事例。例如,一個明細(xì)報表應(yīng)當(dāng)在一個數(shù)據(jù)選擇行被創(chuàng)建。一個用戶單擊了內(nèi)容為12的memo1對象。數(shù)據(jù)行讓這個對象參考什么?那就是為什么你應(yīng)當(dāng)知道主鍵了,主鍵用于明確的標(biāo)識這一行。fastreport能夠賦值一個字串,包含任意數(shù)據(jù)(在我們的事例主鍵數(shù)據(jù)中),對
23、于每個報表對象,這個字串存儲在tagstr屬性中。 讓我們來通過一個報表的例子來舉例說明,這個報表包含在fastreportdemo.exe-'simple list'示例中。這是一個公司的客戶列表,包含諸如客戶名稱,地址,聯(lián)系人等數(shù)據(jù)。數(shù)據(jù)源是來自dbdemos演示數(shù)據(jù)庫的customer.db表。這個表有一個主鍵,custno字段,他沒有出現(xiàn)在報表中。我們的任務(wù)是終止他通過參考單擊完成報表上的任意對象記錄他,這就意味著要獲取主鍵的值,要執(zhí)行此項操作,就要為所有對象的tagstr屬性加入值,依賴于主數(shù)據(jù)欄:customers."custno" 在報表建立期
24、間,使用相同的方法計算tagstr屬性內(nèi)容,同時計算文本對象的內(nèi)容;這就意味著變量值會替代所有變量的位置。變量細(xì)節(jié)使用方括號括起來。那就是為什么行值是'1005', '2112'等類似值了。在報表建立后,包含tagstr屬性對象的類型取決與主數(shù)據(jù)欄。一個簡單的從字串到整形的轉(zhuǎn)換就會提供給我們一個主鍵的值,這也是所需記錄能夠找到的主鍵。 如果主鍵是復(fù)合的(包含多個字段),tagstr屬性的內(nèi)容可能是如下值:table1."field1"table1."field2"在構(gòu)造一個報表完成后,tagstr屬性包含“1000;1”類
25、型值, 此值不同比相同要好。11.從代碼中存取報表對象報表對象(例如:report page, band, memo-object)是不能在你的代碼中直接存取的。這就意味著你不能通過名字尋址對象。例如,當(dāng)你在你的窗體上尋址一個按鈕。要尋址一個對象,在tfrxreport.findobject方法中找到幫助:pascal:var memo1: tfrxmemoview;memo1 := frxreport1.findobject('memo1') as tfrxmemoview;c+:tfrxmemoview * memo = dynamic_cast <tfrxmemov
26、iew *> (frxreport1->findobject("memo1");然后,你就能夠?qū)ぶ穼ο蟮膶傩院头椒?。你也使用“tfrxreport.pages”屬性尋址報表頁。pascal:var page1: tfrxreportpage;page1 := frxreport1.pages1 as tfrxreportpage;c+:tfrxreportpage * page1 = dynamic_cast <tfrxreportpage *> (frxreport1->pages1);12.從代碼中創(chuàng)建報表作為一項規(guī)則,你將在設(shè)計器中創(chuàng)建多
27、數(shù)報表。然而,在某些情況下(例如,當(dāng)報表窗體未知的時候),使用代碼手工創(chuàng)建一個報表是是十分必要的。想要手工創(chuàng)建一個報表,你需要執(zhí)行下面的順序步驟:- 清除報表組件- 添加數(shù)據(jù)源- 添加數(shù)據(jù)頁- 添加報表頁- 添加欄頁- 設(shè)置欄屬性,接著把他們同數(shù)據(jù)相連- 在每個欄上加入對象- 設(shè)置對象屬性,接著把他們同數(shù)據(jù)相連讓我們來檢查一下創(chuàng)建一個簡單報表的類型列表。假設(shè)我們擁有如下組件:frxreport1: tfrxreport and frxdbdataset1: tfrxdbdataset(最后一個連接到dbdemos數(shù)據(jù),customer.db表)。我們的報表將包含一個帶有報表標(biāo)題和主數(shù)據(jù)欄的頁。
28、在報表標(biāo)題欄上有一個帶有“hellow fastreport”文本的對象,主數(shù)據(jù)欄包含一個帶有連接到“custno”字段的對象。pascal:var datapage: tfrxdatapage; page: tfrxreportpage; band: tfrxband; databand: tfrxmasterdata; memo: tfrxmemoview; 清除報表 frxreport1.clear; 為報表添加數(shù)據(jù)集到可存取的列表中 frxreport1.datasets.add(frxdbdataset1); 添加"data"頁 datapage := tfrxd
29、atapage.create(frxreport1); 添加頁 page := tfrxreportpage.create(frxreport1); 創(chuàng)建唯一名稱 page.createuniquename; 設(shè)置默認(rèn)字段大小, 紙張和打印方向 page.setdefaults; 修改紙張方向 page.orientation := polandscape; 添加一個報表標(biāo)題欄 band := tfrxreporttitle.create(page);band.createuniquename; it is sufficient to set the ?top? coordinate and
30、height for a band both coordinates are in pixels band.top := 0;band.height := 20; 為標(biāo)題欄添加一個對象 memo := tfrxmemoview.create(band);memo.createuniquename;memo.text := 'hello fastreport!'memo.height := 20; 這個對象將伸展坐標(biāo)到欄的寬度 memo.align := bawidth; 添加主數(shù)據(jù)欄 databand := tfrxmasterdata.create(page);databan
31、d.createuniquename;databand.dataset := frxdbdataset1; 頂端的調(diào)整應(yīng)當(dāng)比先前加入欄的頂部+高度大一些 databand.top := 100;databand.height := 20; 在主數(shù)據(jù)欄上添加一個對象 memo := tfrxmemoview.create(databand);memo.createuniquename; 連接數(shù)據(jù) memo.dataset := frxdbdataset1;memo.datafield := 'custno'memo.setbounds(0, 0, 100, 20); 調(diào)整文本到右
32、側(cè)的對象邊緣 memo.halign := haright; 顯示報表 frxreport1.showreport;c+:tfrxdatapage * datapage;tfrxreportpage * page;tfrxband * band;tfrxmasterdata * databand;tfrxmemoview * memo;/ 清除報表 frxreport1->clear();/ 在報表上添加一個數(shù)據(jù)集到數(shù)據(jù)集存取列表frxreport1->datasets->add(frxdbdataset1);/ 添加“數(shù)據(jù)”頁datapage = new tfrxdatap
33、age(frxreport1);/ 添加一頁page = new tfrxreportpage(frxreport1);/ 創(chuàng)建一個不重復(fù)的名稱page->createuniquename();/ 設(shè)置域大小, 紙張和默認(rèn)的打印方向page->setdefaults();/ 修改紙張的打印方向page->orientation = polandscape;/ 增加一個報表標(biāo)題欄band = new tfrxreporttitle(page);band->createuniquename();/ 為欄充分設(shè)置頂部坐標(biāo)和高度/ 在像素上包含坐標(biāo)band->top =
34、0;band->height = 20;/ 在報表標(biāo)題欄加入一個對象memo = new tfrxmemoview(band);memo->createuniquename();memo->text = "hello fastreport!"memo->height = 20;/ 此對象將會被按照欄的寬度延展memo->align = bawidth;/ 添加主數(shù)據(jù)欄databand = new tfrxmasterdata(page);databand->createuniquename();databand->dataset =
35、 frxdbdataset1;/ 頂部坐標(biāo)應(yīng)該大于前邊添加欄的頂部坐標(biāo)+高度databand->top = 100;databand->height = 20;/ 主數(shù)據(jù)上加入一個對象memo = new tfrxmemoview(databand);memo->createuniquename();/ 連接到數(shù)據(jù)memo->dataset = frxdbdataset1;memo->datafield = "custno"memo->setbounds(0, 0, 100, 20);/ 調(diào)整文本到右側(cè)對象的空白memo->hali
36、gn = haright;/ 顯示報表frxreport1->showreport(true);讓我們來解釋一些細(xì)節(jié): 所有在報表中使用的數(shù)據(jù)集都必須添加到數(shù)據(jù)源列表中,在我們示例中,是用frxreport1.datasets.add(frxdbdataset1)這一行執(zhí)行的。否則,報表就不會工作。 數(shù)據(jù)頁對于插入內(nèi)部數(shù)據(jù)集是必要的,例如tfrxadotable。這些數(shù)據(jù)集只能放在數(shù)據(jù)頁。 調(diào)用page.setdefaults不是必須的,因為在這個案例中頁a4紙張設(shè)置和頁邊距都是0毫米。默認(rèn)值設(shè)置10毫米頁邊距,并捕獲打印機(jī)頁大小和對齊方式。 在增加欄到頁面的同時,你要確認(rèn)他們沒有互相重
37、疊在一起。要執(zhí)行他,頂部和高度的坐標(biāo)是相似的??偸且谠O(shè)計器中定位相同的位置的。 對象的坐標(biāo)和大小是以像素為單位的,因為所有對象的left, top, width和height屬性都擁有擴(kuò)展類型,你能夠指出非整形值。下面常量用于轉(zhuǎn)化像素到厘米和英寸:fr01cm = 3.77953;fr1cm = 37.7953;fr01in = 9.6;fr1in = 96;例如,一個欄的高度等于5毫米如下設(shè)定:band.height := fr01cm * 5; band.height := fr1cm * 0.5; 12.代碼中創(chuàng)建對話框 我們知道,報表可以包含對話框窗體。下面的例子展示了如何創(chuàng)建一個帶
38、有ok按鈕的對話框窗體:pascal: for working with dialogue objects the following unit should be used uses frxdctrl;var page: tfrxdialogpage; button: tfrxbuttoncontrol; 添加頁 page := tfrxdialogpage.create(frxreport1); 創(chuàng)建唯一名稱 page.createuniquename; 設(shè)置大小 page.width := 200;page.height := 200; 設(shè)定位置 page.position := pos
39、creencenter; 添加一個按鈕 button := tfrxbuttoncontrol.create(page);button.createuniquename;button.caption := 'ok'button.modalresult := mrok;button.setbounds(60, 140, 75, 25); 顯示報表 frxreport1.showreport; c+:/使用對話框?qū)ο蠊ぷ鳎瑫玫较旅娴膯卧?include "frxdctrl.hpp"tfrxdialogpage * page;tfrxbuttoncontrol
40、* button;/添加一頁page = new tfrxdialogpage(frxreport1);/創(chuàng)建唯一名稱page->createuniquename();/設(shè)置大小page->width = 200;page->height = 200;/設(shè)定位置page->position = poscreencenter;/ 添加一個按鈕button = new tfrxbuttoncontrol(page);button->createuniquename();button->caption = "ok"button->moda
41、lresult = mrok;button->setbounds(60, 140, 75, 25);/顯示報表 frxreport1->showreport(true);fast report 的使用說明1. tfrxdbdataset tfrxuserdataset 數(shù)據(jù)存取元件。 fastreport 使用這些元件讀取及參考數(shù)據(jù)庫的字段,這兩個元件都源于 “tfrxdatas
42、et” 并繼承其大部分的功能。 tfrxuserdataset 元件允許構(gòu)建未連接到數(shù)據(jù)庫的報表,而由其它來源接收數(shù)(據(jù)如:數(shù)列、文件等)。在此同時,程序員僅需提供瀏覽此數(shù)據(jù)集的功能,資料接收并非由此元件執(zhí)行,而是用其它的方法(例如,經(jīng)由“tfrxreport.ongetvalue”事件)。 tfrxuserdataset 元件有下列的屬性:
43、(1) property recno: integer readonly;目前記錄編號,首筆的記錄編號是“0” (2) property enabled: boolean default true;定義此 元 件是否可在designer 里面使用。 &
44、#160; (3) property rangebegin: tfrxrangebegin default rbfirst;數(shù)據(jù)導(dǎo)航(navigation)的起點。 &
45、#160; 下列的值可以使用: rbfirst 從數(shù)據(jù)的第一筆記錄開始。rbcurrent 從當(dāng)前的記錄開始 (4) property rangeend: tfrxrangeend default relast;數(shù)據(jù)導(dǎo)航(navigation)的起點。
46、; 下列的值可以使用: relast 直到數(shù)據(jù)結(jié)束。recurrent 直到目前的記錄。recount 依“rangeendcount” 屬性而 定。
47、160; (5) property rangeendcount: integer;數(shù)據(jù)集中的數(shù)據(jù)個數(shù),此功能只在“rangeend”屬性等于recount 有效。 (6) property username: string;符號名稱。在報表設(shè)計環(huán)境(designer)下,將被顯示于dataset 的
48、下方。 (7) property oncheckeof: tfrxcheckeofevent; tfrxcheckeofevent = procedure(sender: tobject; var eof: boolean)of
49、 object; 此事件在數(shù)據(jù)集的尾端時,eof 參數(shù)將返回true。 (8) property onfirst: tnotifyevent;數(shù)據(jù)集移至第一筆的位置時,會觸發(fā)此事件。
50、0; (9) property onnext: tnotifyevent;數(shù)據(jù)集移至下一筆的位置時,會觸發(fā)此事件。 (10) property onprior: tnotifyevent;數(shù)據(jù)集移至上一筆的位置時,會觸發(fā)此事件。 2. tfrxdbdataset 元件用來連接以tdataset, ttable 及tquery 為基類的
51、數(shù)據(jù)庫元件,有關(guān)數(shù)據(jù)的導(dǎo)航及字段的參考都是自動的,程序員不需特殊的設(shè)定。 除上述屬性外,該元件有下列的屬性: (1) property closedatasource: boolean default false;報表創(chuàng)建完成后,關(guān)閉數(shù)據(jù)庫。 (2) property opendatasource: boolean de
52、fault true;在報表創(chuàng)建之前打開數(shù)據(jù)庫。 (3) property fieldaliases: tstrings;數(shù)據(jù)集字段的符號名稱(別名)。 (4) property dataset: tdataset; (5) property datasource: tdatasource;連結(jié)至
53、tdataset 或tdatasource 類型的元件。 (6) property onclose: tnotifyevent;當(dāng)關(guān)閉數(shù)據(jù)集時觸發(fā)此事件。 (7) property onopen: tnotifyevent;當(dāng)打開數(shù)據(jù)集時觸發(fā)此事件 3. tfrxdesigner tfrxdesigner 元件是報表設(shè)計器,當(dāng)使用此元件,你的工程文件就可以使用報表
54、設(shè)計器,此元件它只包含一些報表設(shè)計器的設(shè)定,當(dāng)加入”frxdesign” 單元到uses 清單中,就表明與報表設(shè)計器連接上了。 此元件包含下列的屬性: (1) property closequery: boolean default true;定義結(jié)束設(shè)計報表是否詢問儲存報表之用。 (2) pro
55、perty opendir: string;打開報表的預(yù)置數(shù)據(jù)目錄 (3) property savedir: string;儲存報表的預(yù)置數(shù)據(jù)目錄。 (4) property restrictions: tfrxdesignerrestrictions;報表設(shè)計環(huán)境下,限制不同的報表操作標(biāo)識(flag),此標(biāo)識包含單一或混合數(shù)據(jù)值: drdontinsertobjec
56、t 禁止插入物件drdontdeletepage 禁止刪除頁面drdontcreatepage 禁止建立新的頁面 drdontchangepageoptions 禁止修改頁面屬性drdontcreatereport 禁止建立新報表 drdontloadreport 禁止載入報表drdontsavereport 禁止儲存報表 drdontpreviewreport 禁止預(yù)覽報表drdonteditvariables 禁止編輯變量 drdontchangereportoptions 禁止修改報表屬性 (5)
57、0; property onloadreport: tfrxloadreportevent; tfrxloadreportevent = function(report: tfrxreport): boolean of object; 此事件發(fā)生在載入報表之時。利用此事件,你可以從數(shù)據(jù)庫載入報表。 (6) property onsavereport: tfrxsavereportevent; tfrxsavereportevent = function(report: tfrxrepo
58、rt;saveas:boolean): boolean of object; 此事件發(fā)生在儲存報表之時。利用此事件,你可以將報表儲存于數(shù)據(jù)庫中。 (7) property onshow: tnotifyevent;此事件發(fā)生在啟動報表設(shè)計環(huán)境時。 4. tfrxpreview 此元件專供建立自定義報表合預(yù)覽窗口使用。 (1) procedure addpage;加入空白頁面到報表末端。
59、160; (2) procedure deletepage;刪除當(dāng)前頁。 (3) procedure print;打印報表。 (4) procedure loadfromfile;顯示文件載入窗口。 (5) procedure loadfromfile(filename: s
60、tring);載入指定的文件。 (6) procedure savetofile;顯示文件儲存窗口。 (7) procedure savetofile(filename: string);儲存文件到指定的文件名稱 (8) procedure edit;載入當(dāng)前頁至設(shè)計模式供編輯使用。 (
61、9) procedure export(filter: tfrxcustomexportfilter);使用指定的導(dǎo)出過濾器導(dǎo)出報表。 (10) procedure first;第一頁。 (11) procedure next;下一頁。 (12) procedure prior;上一頁 (13) procedur
62、e last;最后一頁。 (14) procedure pagesetupdlg;顯示頁面設(shè)定窗口。 (15) procedure find;顯示文字搜尋窗口。 (16) procedure findnext;繼續(xù)找下一個。 (17) procedure cancel;取消創(chuàng)建報表。 (18) p
63、rocedure clear;清除報表。 你可以使用下列屬性: (1) property pagecount: integer readonly;報表頁數(shù)。 (2) property pageno: integer;目前報表頁碼(起始值為1)。要移至其它頁面,指定此屬性的值即可。 &
64、#160; (3) property tool: tfrxpreviewtool;選取工具。 (4) property zoom: extended;顯示比例,“1” 代表100% 。 (5) property zoommode: tfrxzoommode;顯示模式,可以的顯示模式如下:zmdefault 預(yù)置值,顯示比例根據(jù)“zoom” 屬性而定zmwholepage 整頁模式
65、zmpagewidth 與頁面寬度相同 zmmanypages 一屏顯示多頁 (6) property outlinevisible: boolean;是否顯示報表大綱(樹狀結(jié)構(gòu))。 (7) property onpagechanged: tfrxpagechangedevent;目前頁面要改變時,此事件將被觸發(fā)。 5. tfrxbarcodeobject tfrxoleobje
66、ct tfrxchartobjecttfrxrichobject tfrxcrossobject tfrxcheckboxobject tfrxgradientobject 可在報表內(nèi)部使用的物件,這些元件自己沒做任何事情,它們會自動將元件的單元加入uses 清單,加入你打算打開一份報表,此功能會自動被加入報表,未包括此物件至工程文件的話,打開報表時將會發(fā)生錯誤。 tfrxdialogcontols 附加項(add-in) 物件的集合,可用于報表內(nèi)的對話窗口,它包含下列元件:button,edit box, list box 等。此元件自己不會執(zhí)行任何事,加入此元件“frxdctrl”將會自動加入“uses”清單。 tfrx
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑安全培訓(xùn)平臺
- 四年級數(shù)學(xué)幾百幾十?dāng)?shù)乘以一位數(shù)能力檢測練習(xí)題帶答案
- 硅谷銀行業(yè)務(wù)介紹
- 母乳喂養(yǎng)工作日常護(hù)理
- 發(fā)票管理與合同控稅
- 2024屆天津市寶坻區(qū)中考數(shù)學(xué)猜題卷含解析
- 廣西市級名校2023-2024學(xué)年中考一模數(shù)學(xué)試題含解析
- 2025企業(yè)頻發(fā)欠薪行為如何合法解除勞動合同
- 2025國家助學(xué)貸款合同樣本
- 2025《冰箱維保合同》
- 憲法與銀行業(yè)務(wù)
- 機(jī)電安裝工程專業(yè)分包合同
- 行政事業(yè)單位財務(wù)知識培訓(xùn)
- 2025-2030中國探地雷達(dá)行業(yè)發(fā)展分析及發(fā)展趨勢預(yù)測與投資價值研究報告
- 智慧共享中藥房建設(shè)與運(yùn)行規(guī)范
- 《中央八項規(guī)定精神學(xué)習(xí)教育》專項講座
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 質(zhì)保體系復(fù)習(xí)題 2
- DB11-T 3032-2022水利工程建設(shè)質(zhì)量檢測管理規(guī)范
- 道路標(biāo)線標(biāo)識檢驗批質(zhì)量驗收記錄
- 勞動者就業(yè)登記表(通用模板)
評論
0/150
提交評論