原創(chuàng)|其它|編輯:郝浩|2012-10-30 14:08:08.000|閱讀 640 次
概述:有時報表的結(jié)構(gòu)在應(yīng)用的設(shè)計階段是不確定的或者它需要在運(yùn)行時改變。這種情況就必須動態(tài)創(chuàng)建報表模板。象這種情況,報表不固定,所以不能通過程序員為軟件定義一個相應(yīng)的獨(dú)立文件到一個新窗體中,只能使用最終用戶報表。對于FastReport,它利用你自己的程序代碼動態(tài)創(chuàng)建報表窗體,就象VCL對象一樣。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
有時報表的結(jié)構(gòu)在應(yīng)用的設(shè)計階段是不確定的或者它需要在運(yùn)行時改變。這種情況就必須動態(tài)創(chuàng)建報表模板。象這種情況,報表不固定,所以不能通過程序員為軟件定義一個相應(yīng)的獨(dú)立文件到一個新窗體中,只能使用最終用戶報表。對于FastReport,它利用你自己的程序代碼動態(tài)創(chuàng)建報表窗體,就象VCL對象一樣。
這個例子可以從RUNTIME子目錄中找到。這個例子中,當(dāng)按下按鈕后,一個從CUSTOMER.DB數(shù)據(jù)表接收公司列表的報表將被創(chuàng)建。這個按鈕的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;
首先這個代碼刪除報表中所有可用的頁面,然后創(chuàng)建一個空白頁:
frReport1.Pages.Clear;
frReport1.Pages.Add; // create page
接著在這個頁上創(chuà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)建一個“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)備好的報表。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)