[翻译]Writing Custom Wizards 编写自定义的向导
Writing Custom Wizards 编写自定义的向导
You can extend FastReport's functionality with the help of custom wizards. FastReport, for example, contains the standard “Report Wizard” which is called from the “File >|New…” menu item.
There are two types of wizards supported by FastReport. The first type includes the wizard already mentioned, called from the “File>New…” menu item. The second one includes wizards that can be called from the “Wizards” toolbar.
The base class for any wizard is “TfrxCustomWizard”, defined in the “frxClass” file.
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;
To write your own wizard inherit from this class and override at least the “GetDescription” and “Execute” methods. The first method returns the wizard name; the second method is called when running the wizard; it must return “True” if the wizard finished successfully and made any changes to the report. While the wizard is running you can access designer and report methods and properties as normal using the “Designer” and “Report” properties.
Wizard registration and deletion is performed using the procedures defined in the “frxDsgnIntf” file:
向导的注册用以下方法,声明在frxDsgnIntf文件:
frxWizards.Register(ClassRef: TfrxWizardClass; ButtonBmp: TBitmap;IsToolbarWizard: Boolean = False);
frxWizards.Unregister(ClassRef: TfrxWizardClass);
On registration supply the wizard class name, its picture and whether the wizard is to be placed on the “Wizards” toolbar. If the wizard should be placed on the toolbar the ButtonBmp size must be either 16x16 pixels or 32x32 pixels.
//举例
Let's look at a primitive wizard that will be accessed through the "File>New..." menu item. It adds a new page to a report.
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.
[翻译]Writing Custom Wizards 编写自定义的向导的更多相关文章
- [翻译]Writing Custom Report Components 编写自定义报表组件
摘要:简单介绍了如何编写一个FastReport的组件,并且注册到FastReport中使用. Writing Custom Report Components 编写自定义报表组件 FastRep ...
- [翻译]Writing Custom Common Controls 编写自定义控件
摘要:介绍如何编写自定义的控件,用在报表的窗体上(如Edit,Button等) Writing Custom Common Controls 编写自定义控件 FastReport contains ...
- [翻译]Writing Custom DB Engines 编写定制的DB引擎
Writing Custom DB Engines 编写定制的DB引擎 FastReport can build reports not only with data sourced from ...
- [翻译]Writing Component Editors 编写组件的编辑器
Writing Component Editors 编写组件的编辑器 All common control editors (opened from a control's context me ...
- [翻译] Writing Property Editors 编写属性编辑器
Writing Property Editors 编写属性编辑器 When you select a component in the designer its properties are di ...
- (译)Getting Started——1.3.4 Writing a Custom Class(编写自定义的类)
在开发IOS应用中,当你编写自定义的类时,你会发现很多的特殊场合.当你需要把自定义的行为和数据包装在一起时,自定义的类非常有用.在自定义的类中,你可以定义自己的存储.处理和显示数据的方法. 例如,I ...
- django “如何”系列4:如何编写自定义模板标签和过滤器
django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...
- SpringBoot编写自定义的starter 专题
What’s in a name All official starters follow a similar naming pattern; spring-boot-starter-*, where ...
- Kubernetes 编写自定义 controller
原文链接:Kubernetes编写自定义controller 来自kubernetes官方github的一张图: 如图所示,图中的组件分为client-go和custom controller两部分: ...
随机推荐
- LinuxI/O 性能分析
.I/O linux 命令: ostat 监视I/O子系统 iostat [参数][时间][次数] 通过iostat方便查看CPU.网卡.tty设备.磁盘.CD-ROM 等等设备的活动情况, 负载信息 ...
- crsf 跨站请求伪造
[crsf 跨站请求伪造] CSRF(Cross-site request forgery),中文名称:跨站请求伪造.核心为利用浏览器帮助提交cookie.采用随机数方可防御.估计大部小站均无CSRF ...
- ubuntu部署jenkins
https://www.cnblogs.com/lozz/p/9962316.html 1.安装 wget -q -O - https://pkg.jenkins.io/debian/jenkins- ...
- SpringBoot中使用Redis
在SpringBoot中使用Redis,思路如下: 查询时先查Redis缓存,如果缓存中存在信息,就直接从缓存中获取. 如果缓存中没有相关信息,就去数据库中查找,查完顺便将信息存放进缓存里,以便下一次 ...
- 破解版ps
http://www.sdifen.com/adobe-photoshop-cc.html
- phpStudy1——PHP文件获取html提交的参数
示例代码: submit.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- 两台Linux之间传文件
安装sudo apt-get install openssh-client openssh-server 使用scp命令: scp john@~/hallo.h /usr/include 将左边移动到 ...
- virtualbox Linux与Windows共享文件
安装virtualbox增强功能 在Windows下新建文件用于共享,点设置->共享文件夹->添加共享文件,制定路径和名称(名称用于Linux中挂载使用)(选择固定分配) 在Linux中m ...
- TZOJ 4007 The Siruseri Sports Stadium(区间贪心)
描述 The bustling town of Siruseri has just one sports stadium. There are a number of schools, college ...
- [leetcode]239. Sliding Window Maximum滑动窗口最大值
Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...