原創|其它|編輯:郝浩|2012-10-30 14:08:08.000|閱讀 640 次
概述:有時報表的結構在應用的設計階段是不確定的或者它需要在運行時改變。這種情況就必須動態創建報表模板。象這種情況,報表不固定,所以不能通過程序員為軟件定義一個相應的獨立文件到一個新窗體中,只能使用最終用戶報表。對于FastReport,它利用你自己的程序代碼動態創建報表窗體,就象VCL對象一樣。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
有時報表的結構在應用的設計階段是不確定的或者它需要在運行時改變。這種情況就必須動態創建報表模板。象這種情況,報表不固定,所以不能通過程序員為軟件定義一個相應的獨立文件到一個新窗體中,只能使用最終用戶報表。對于FastReport,它利用你自己的程序代碼動態創建報表窗體,就象VCL對象一樣。
這個例子可以從RUNTIME子目錄中找到。這個例子中,當按下按鈕后,一個從CUSTOMER.DB數據表接收公司列表的報表將被創建。這個按鈕的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;
首先這個代碼刪除報表中所有可用的頁面,然后創建一個空白頁:
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);
下一步是創建一個“Text”對象,并指定到CUSTOMER.DB數據表的COMPANY字段:
v := frCreateObject(gtMemo, ''); // create data field
v.SetBounds(20, 20, 200, 16);
v.Memo.Add('[Table1."Company"]');
Page.Objects.Add(v);
最后使用事件處理在預覽中顯示準備好的報表。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網