原創|其它|編輯:郝浩|2012-12-04 10:38:14.000|閱讀 524 次
概述:你可以在自定義向導的幫助下,擴展FastReport VCL報表功能。通過“File >|New…”菜單項調用FastReport VCL中包含的標準“Report Wizard”。FastReport VCL 支持2種類型的向導。上述提到的是第一種類型的向導,通過“File >|New…”菜單項調用它。第二種類型的向導通過“Wizards”工具欄來對其進行調用。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
你可以在自定義向導的幫助下,擴展FastReport VCL報表功能。通過“File >|New…”菜單項調用FastReport VCL中包含的標準“Report Wizard”。FastReport VCL 支持2種類型的向導。上述提到的是第一種類型的向導,通過“File >|New…”菜單項調用它。第二種類型的向導通過“Wizards”工具欄來對其進行調用。
“TfrxCustomWizard”是任何向導類型的基類,在 “frxClass” 文件中,已對其作了聲明:
TfrxCustomWizard = class(TComponent) Public Constructor Create(AOwner: TComponent); override; class function GetDescription: String; virtual; abstract; function Execute: Boolean; virtual; abstract; property Designer: TfrxCustomDesigner read FDesigner; property Report: TfrxReport read FReport; end;
你可以從“TfrxCustomWizard”基類中繼承你自己的向導,并且至少重寫“GetDescription”和“Execute” 方法。第一種方法返回向導的名稱;當運行向導時,便調用第二種方法。如何完成向導操作并對報表進行了修改,第二種方法便返回為“True”。運行向導時,通過“Designer”和“Report” 屬性,你可以像平時一樣訪問設計器,報表方法和屬性。
利用“frxDsgnIntf”文件中所定義的程序實現向導注冊和刪除。
frxWizards.Register(ClassRef: TfrxWizardClass; ButtonBmp: TBitmap; IsToolbarWizard: Boolean = False); frxWizards.Unregister(ClassRef: TfrxWizardClass);
在向導注冊過程中,需要提供向導類名,圖片以及向導是否放置到 “Wizards” 工具欄上。如果向導被放置到工具欄上,ButtonBmp大小可以為16×16像素或者32x32像素。
接下來的示例,我們就用本文中所提及的第一種向導來為報表添加一個新頁面。
uses frxClass, frxDsgnIntf; type TfrxMyWizard = class(TfrxCustomWizard) public class function GetDescription: String; override; function Execute: Boolean; override; end; class function TfrxMyWizard.GetDescription: String; begin Result := 'My Wizard'; end; function TfrxMyWizard.Execute: Boolean; var Page: TfrxReportPage; begin { lock any drawings in designer } Designer.Lock; { create new page in report } Page := TfrxReportPage.Create(Report); { create unique name for page } Page.CreateUniqueName; { set paper sizes and orientation to defaults } Page.SetDefaults; { update report pages and switch focus to last added page } Designer.ReloadPages(Report.PagesCount - 1); end; var Bmp: TBitmap; initialization Bmp := TBitmap.Create; { load picture from resource; of course, it must already be there } Bmp.LoadFromResourceName(hInstance, 'frxMyWizard'); frxWizards.Register(TfrxMyWizard, Bmp); finalization frxWizards.Unregister(TfrxMyWizard); Bmp.Free; end.
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網