原創(chuàng)|其它|編輯:郝浩|2012-10-30 14:08:08.000|閱讀 640 次
概述:有時(shí)報(bào)表的結(jié)構(gòu)在應(yīng)用的設(shè)計(jì)階段是不確定的或者它需要在運(yùn)行時(shí)改變。這種情況就必須動態(tài)創(chuàng)建報(bào)表模板。象這種情況,報(bào)表不固定,所以不能通過程序員為軟件定義一個(gè)相應(yīng)的獨(dú)立文件到一個(gè)新窗體中,只能使用最終用戶報(bào)表。對于FastReport,它利用你自己的程序代碼動態(tài)創(chuàng)建報(bào)表窗體,就象VCL對象一樣。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
有時(shí)報(bào)表的結(jié)構(gòu)在應(yīng)用的設(shè)計(jì)階段是不確定的或者它需要在運(yùn)行時(shí)改變。這種情況就必須動態(tài)創(chuàng)建報(bào)表模板。象這種情況,報(bào)表不固定,所以不能通過程序員為軟件定義一個(gè)相應(yīng)的獨(dú)立文件到一個(gè)新窗體中,只能使用最終用戶報(bào)表。對于FastReport,它利用你自己的程序代碼動態(tài)創(chuàng)建報(bào)表窗體,就象VCL對象一樣。
這個(gè)例子可以從RUNTIME子目錄中找到。這個(gè)例子中,當(dāng)按下按鈕后,一個(gè)從CUSTOMER.DB數(shù)據(jù)表接收公司列表的報(bào)表將被創(chuàng)建。這個(gè)按鈕的OnClick事件處理的源代碼顯示如下:
procedure TForm1.Button1Click(Sender: TObject);
var
v: TfrView;
b: TfrBandView;
Page: TfrPage;
begin
frReport1.Pages.Clear;
frReport1.Pages.Add; // create page
Page := frReport1.Pages[0];
b := TfrBandView(frCreateObject(gtBand, '')); // create MasterData band
b.SetBounds(0, 20, 0, 20);
b.BandType := btMasterData;
b.Dataset := 'frDBDataSet1';
Page.Objects.Add(b);
v := frCreateObject(gtMemo, ''); // create data field
v.SetBounds(20, 20, 200, 16);
v.Memo.Add('[Table1."Company"]');
Page.Objects.Add(v);
frReport1.ShowReport;
end;
首先這個(gè)代碼刪除報(bào)表中所有可用的頁面,然后創(chuàng)建一個(gè)空白頁:
frReport1.Pages.Clear;
frReport1.Pages.Add; // create page
接著在這個(gè)頁上創(chuàng)建“主項(xiàng)數(shù)據(jù)”區(qū)域,并指定數(shù)據(jù)源:
Page := frReport1.Pages[0];
b := TfrBandView(frCreateObject(gtBand, '')); // create MasterData band
b.SetBounds(0, 20, 0, 20);
b.BandType := btMasterData;
b.Dataset := 'frDBDataSet1';
Page.Objects.Add(b);
下一步是創(chuàng)建一個(gè)“Text”對象,并指定到CUSTOMER.DB數(shù)據(jù)表的COMPANY字段:
v := frCreateObject(gtMemo, ''); // create data field
v.SetBounds(20, 20, 200, 16);
v.Memo.Add('[Table1."Company"]');
Page.Objects.Add(v);
最后使用事件處理在預(yù)覽中顯示準(zhǔn)備好的報(bào)表。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)