FastReport VCL報表控制元件教程:元件編輯器寫作
FastReport VCL是用於 Delphi、C++ Builder、RAD Studio 和 Lazarus 的報告和文件建立 VCL 庫。它提供了視覺化模板設計器,可以訪問 30 多種格式,並可以部署到雲、網站、電子郵件和列印中。
預設情況下,任何通用控制元件編輯器(可以從元素上下文選單或透過雙擊呼叫)都會建立 OnClick 空白事件處理程式。這種行為可以透過編寫自定義編輯器來代替。此外,編輯器允許將您自己的專案新增到元件上下文選單中。
所有編輯器的基本類在 frxDsgnIntf 檔案中宣告:
TfrxComponentEditor = class(TObject) protected function AddItem(Caption: String; Tag: Integer; Checked: Boolean = False): TMenuItem; public function Edit: Boolean; virtual; function HasEditor: Boolean; virtual; function Execute(Tag: Integer; Checked: Boolean): Boolean; virtual; procedure GetMenuItems; virtual; property Component: TfrxComponent readonly; property Designer: TfrxCustomDesigner readonly; end;
如果您的編輯器沒有在上下文選單中建立自己的專案,您將需要覆蓋兩個方法,即Edit和HasEditor。第一個方法執行必要的操作(例如,顯示對話方塊)並返回“True”,如果元件狀態被修改。HasEditor如果你的元件有編輯器,方法應該返回“True”。如果它返回“False”或者您沒有覆蓋此方法,則不會呼叫編輯器。如果您的元件沒有編輯器並且您希望將專案新增到元件上下文選單中,這將是必要的。
如果編輯器將專案新增到上下文選單中,則應覆蓋GetMenuItems(在此方法中,您可以藉助呼叫AddItem函式建立選單)和Execute(呼叫此方法,當您在元件選單中選擇一項時;響應所選選單項應該在這裡描述)方法。
編輯器註冊透過“frxDsgnIntf”檔案中描述的過程執行:
frxComponentEditors.Register(ComponentClass: TfrxComponentClass; ComponentEditor: TfrxComponentEditorClass);
第一個引數是類名,要為其建立編輯器。第二個引數是編輯器類名。
讓我們來看看我們的共同控制簡單的編輯器,它會顯示一個視窗,我們的元素名稱並新增“已啟用”和“可見”專案元素上下文選單(選擇專案時,Enabled和Visible性質會發生變化)。編輯器程式碼,根據FastReport的要求,可以放在與元件程式碼檔案同名的檔案中,新增Editor字尾(例如本例中的frxBitBtnEditor.pas)。
uses frxClass, frxDsgnIntf, frxBitBtn; type TfrxBitBtnEditor = class(TfrxComponentEditor) public function Edit: Boolean; override; function HasEditor: Boolean; override; function Execute(Tag: Integer; Checked: Boolean): Boolean; override; procedure GetMenuItems; override; end; function TfrxBitBtnEditor.Edit: Boolean; var c: TfrxBitBtnControl; begin Result := False; { Component property is edited component. In this case, it is TfrxBitBtnControl } c := TfrxBitBtnControl(Component); ShowMessage('This is ' + c.Name); end; function TfrxBitBtnEditor.HasEditor: Boolean; begin Result := True; end; function TfrxBitBtnEditor.Execute(Tag: Integer; Checked: Boolean): Boolean; var c: TfrxBitBtnControl; begin Result := True; c := TfrxBitBtnControl(Component); if Tag = 1 then c.Enabled := Checked else if Tag = 2 then c.Visible := Checked; end; procedure TfrxBitBtnEditor.GetMenuItems; var c: TfrxBitBtnControl; begin c := TfrxBitBtnControl(Component); { AddItem method parameters: menu item name, its tag and Checked/Unchecked condition } AddItem('Enabled', 1, c.Enabled); AddItem('Visible', 2, c.Visible); end; initialization frxComponentEditors.Register(TfrxBitBtnControl, TfrxBitBtnEditor); end.
如果您對 FastReport 感興趣,歡迎加入 FastReport QQ 交流群:702295239
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995027/viewspace-2781047/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FastReport報表控制元件使用技巧總結AST控制元件
- FastReport VCL程式設計師手冊:互動式報表AST程式設計師
- 第三方編輯器控制元件控制元件
- FastReport VCL程式設計師手冊:使用TfrxReport元件AST程式設計師元件
- FastReport VCL如何從程式碼訪問報告物件AST物件
- 向量圖形編輯控制元件控制元件
- UltraEdit文字編輯器編寫強大的宏教程
- Unity3D編輯器外掛編寫教程Unity3D
- jqGrid 編輯自定義控制元件控制元件
- 將 fastreport 封裝為 ocx 控制元件AST封裝控制元件
- Qt編寫自定義控制元件屬性設計器QT控制元件
- VCL介面控制元件DevExpress VCL釋出v17.2.8|附下載控制元件devExpress
- fastreport .net列印普通報表AST
- VI編輯器基本教程
- Project JEDI VCL元件編碼標準 (轉)Project元件
- [HTML編輯器]C#編寫的HTML編輯器:原理篇HTMLC#
- 【版本升級】VCL介面控制元件DevExpress VCL釋出v17.2.6|附下載控制元件devExpress
- VCL介面控制元件DevExpress VCL Controls v17.2.2釋出|附下載控制元件devExpress
- 填報表上下載檔案控制元件可寫許可權控制控制元件
- Repeater控制元件實現編輯、更新、刪除操作控制元件
- 時間條控制元件製作簡明教程控制元件
- Vi/Ex編輯器教程[4]
- Vi/Ex編輯器教程[3]
- Vi/Ex編輯器教程[2]
- Vi/Ex編輯器教程[1]
- 遊戲編輯器框架教程 (轉)遊戲框架
- Xamarin iOS教程之編輯介面編寫程式碼iOS
- DbForge Studio for SQL Server入門教程:在表編輯器中建立表SQLServer
- VCL介面控制元件DevExpress VCL Controls釋出v18.1.3|附下載控制元件devExpress
- 如何在jsp上實現報表編輯器功能?JS
- 【自定義使用者控制元件】 wpf 可繫結的RichTextBox 編輯器。控制元件
- iA Writer文字編輯器,心無旁騖,全神貫注寫作!
- .NET控制元件名稱縮寫一覽表控制元件
- 程式碼控制 textarea 控制元件是否為KindEditor 編輯框控制元件
- 編寫在瀏覽器中不彈出警告的ActiveX控制元件瀏覽器控制元件
- Vue寫一個Markdown編輯器Vue
- Asp.Net伺服器控制元件開發的Grid實現(三)列編輯器ASP.NET伺服器控制元件
- 在Delphi中編寫控制元件的基本方法 (轉)控制元件