Delphi 给自定义控件添加属性页

 一、基础知识介绍:

1、属性编辑器和控件属性的关联函数:

RegisterPropertyEditor函数:它用来注册一个属性编辑器,将控件中的一个属性和编辑器关联起来。

procedure RegisterPropertyEditor(PropertyType: PTypeInfo; ComponentClass: TClass; const PropertyName:string; EditorClass: TPropertyEditorClass);

   1>、PropertyType:PTypeInfo。它是一个指针,指向要编辑的属性的运行期类型信息。我们通过TypeInfo()获取(TypeInfo(string))。

   2>、Component: Calss。用于指定这个属性编辑器所作用的组件类(TMyDataBaseEdit);

   3>、const PropertyName: string。是一个字符串,用于指定被作用属性的名称。

   4>、EditorClass: TPropertyEditorClass。用于指定属性编辑器的类型。

       利用RegisterPropertyEditor函数,就可以把一个组件分成两个包:一个设计期包和一个运行期包,减少代码的膨胀。

 

二、创建设计包:

        在自定义控件添加一列属性,在属性编辑浏览器中出现一项属性(XAbout),右侧显示:(XAbout)…  ,点击“…”按钮弹出一个对话框。

具体步骤:

1、  下面我们开始新建一个Package,按照命名规则起名:MyDataEditDsgn60.Dpk,

2、  然后新建一个Form(TFrmAbout),作为XAbout对话框,我们可以根据需要自行设计界面。

3、  在MyDataEditDsgn60.Dpk的requires后面加上:DesignIDE。(不然可能会遇到问题“File not found Proxies.dcu”)

4、  在TFrmAbout窗体类的下面新建一个类TAboutEditor,使其从TPropertyEditor下继承过来:

 TAboutEdit = class(TPropertyEditor) //属性编辑器。Uses DesignEditors;

  private

    FFrmAbout: TFrmAbout;

  public

    function GetAttributes: TPropertyAttributes;override;   //Uses DesignIntf

    function GetValue: string;override;// 覆盖GetAttributes函数:告诉IDE将以何种工作方式进行显示

    procedure Edit;override;// 覆盖Edit函数:用来创建销毁窗体对象。

  end;

注意:将全局的变量(FrmAbout: TFrmAbout)删掉,重新在TAboutEdit类中声明一个新的私有变量。

 

5、实现各个控制函数函数:( 如果想进一步控制,还可以在研究TPropertyEditor类的代码)

1>、覆盖Edit函数:用来创建销毁窗体对象。

procedure TAboutEdit.Edit;

begin

  FFrmAbout := TfrmAbout.Create(Application);

  FFrmAbout.ShowModal;

  FreeAndNil(FFrmAbout);

end;

 

2>、覆盖GetAttributes函数:告诉IDE将以何种工作方式进行显示

function TAboutEdit.GetAttributes: TPropertyAttributes;

begin

  Result := [paDialog,paReadOnly];//以只读对话框的方式显示的

end;

        关于TPropertyAttributes可以参考帮助看看。我们这里是以只读对话框的方式显示的,【ObjectInspector】将在About属性旁边出现一个省略号按钮。当用户单击这个按钮,就调用Edit方法。

 

3>、覆盖GetValue函数,是为了省略号按钮旁出现“(About)”的字样,并且只读。

function TAboutEdit.GetValue: string;

begin

  Result := '(About)'

end;

 

三、把上面的编辑器和控件关联起来

1、在窗体TFrmAbout的单元文件里添加注册属性的代码;

    1>、在implementation的前面添加代码: procedure Register; //注册构件

    2>、在implementation的后面添加代码:

procedure Register;

begin                

//前提是组件面板中已经存在TMyDataBaseEdit自定义控件,它存在XAbout这个属性,属性类型为String型;

//将TAboutEdit与属性XAbout关联起来

  RegisterPropertyEditor(TypeInfo(string),TMyDataBaseEdit,'XAbout',TAboutEdit);

end;

 

                                   假如第二个参数设为nil,第三个参数设为空串,RegisterPropertyEditor(TypeInfo(string),nil,'',TAboutEdit);所有string类型的属性全部变成About框了。(呵呵,理论上是这么回事,但是实际上根本不是。) 把窗体TFrmAbout做成一个复杂的有返回值的对话框,这样我们就可以真正用对话框来编辑控件的属性了。

Delphi 制作自定义数据感知控件并装入包(dpk文件)中(与DBText类似的数据感知控件)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi XE8 iOS与Android移动应用开发(APP开发)[完整中文版],这是一本不可多得的介绍使用delphi xe8开发iOS与Android移动应用的电子书,实用的技术开发教程与技术开发手册。 Delphi XE8跨平台开发让你使用一套代码完成iOS和Android移动应用开发。强大的控件支持,让你可以不用编写一句代码并在短短几分钟内完成数据库的读写 应用开发,开发效率得到充分提升,让编程不再是枯燥无味的工作。全书400多,从开发环境的安装配置到使用基本界面控件、使用移动设备功能(移动定位、 照像机等)、使用后端服务、访问数据库等都作了全面介绍,是第一本国内最全的中文版Delphi XE8技术开发教程。本书需要有一定delphi基础知识的人阅读。 目 录 第一章 移动应用程序开发(iOS和Android) 17 1. 安装与配置 17 2. 使用基本用户界面控件 18 3. 使用设备功能 20 4. 使用后端服务 21 5. 访问数据库 21 第二章 配置Mac上的开发环境(IOS) 23 2.1 Mac 和 iOS 的要求 23 2.2 配置 Mac 上的iOS模拟器 24 2.2.1 安装平台助手 24 2.2.2 运行平台助手 25 2.2.3 在Mac上安装Xcode 26 2.3 配置 Mac上iOS 硬件设备运行环境 28 2.3.1 在Mac上安装Xcode命令行工具 28 2.3.2 注册一个开发者账户 30 2.3.3 申请、下载并安装你的开发证书 30 2.3.4 注册您的设备 32 2.3.5 创建与安装配置文件 33 第三章 配置WINDOWS PC上的开发环境(iOS) 36 3.1 配置 RAD Studio 环境 37 3.1.1创建与Mac连接的配置 37 3.1.2为iOS设备添加一个SDK 40 第四章 配置WINDOWS PC上的开发环境 (Android) 43 4.1设置 RAD Studio 环境 43 4.1.1 安装RAD Studio时 android 开发工具安装选项 44 4.1.2 在开发环境中配置 Android SDK 46 4.2安装Android USB 驱动程序(必须) 50 第五章 创建移动平台应用程序 (iOS and Android) 54 5.1在你开始之前 54 5.2创建一个新的Android或iOS FireMonkey应用 55 5.3选择Style 56 5.4在多设备窗体上放置组件 56 5.5添加视图到项目 60 5.6编写用户单击按钮的事件处理程序 60 5.7测试移动应用程序 62 5.7.1在Android 设备上测试应用程序 63 5.7.2在 iOS测试应用程序 64 第六章 使用不同风格的按钮控件 (iOS and Android) 67 6.1移动平台中的按钮 67 6.2定义按钮控件的友好界面 68 6.2.1使用按钮控件的 TintColor 和 IconTintColor属性 69 6.2.2自定义按钮控件的图片 71 6.3使用按钮控件创建Segmented Control 72 6.4在工具栏创建 Scope Bar 74 第七章 使用日历控件选取日期 (iOS and Android) 76 7.1移动平台中的日历 76 7.2为用户更改的日期编写事件处理程序 78 第八章 组合框控件的使用 (iOS and Android) 81 8.1多设备应用程序中的选择器 81 8.2使用代码建立列表数据项 84 8.3显示一个指定的项目 84 8.4编写用户选择后的事件处理程序 86 第九章 使用地图控件 (iOS and Android) 88 9.1TMapView 控件的基本功能 89 9.2创建示例应用程序 89 9.2.1配置 Android 应用程序以使用 TMapView 控件
1、支持屏幕打印,控制方法多样,可以打印全部rxlib控件全部InfoPower控件,TDBGrid,TStringGrid,TImage,TEdit等,TDBGridEh,f1book,TDecisionGrid等等众多控件。(例子1,例子2,例子3,例子4,例子5)   2、支持最终用户设计、修改报表,只需连接相关的数据源,指出数据的位置(设置报表样式),无论是主从表,子报表,套表,都可迅速生成。开发一个报表只需几分钟的时间。   3、报表样式可以保存为rmf格式,下次可通过读入使用(配合SQL脚本就可以生成报表)。并可以把带数据的报表保存为rmp格式,在任何机器上都可以浏览、打印,而不需要数据库。   4、生成后的报表支持修改,包括字体的设置,边框的设置,修改内容等。   5、报表编辑器内自带ado,bde,ibx,Diamond dao,dbisam等数据访问控件,可以通过这些控件开发独立的报表制作工具。其使用方法和delphi中的控件是一样的。   6、完全、自由自定义面、边距、字体,标题和脚,并可以在自认合适的地方插入函数来实现当前日期,合计,总合计等功能,合计字段可以放在头,分组头,并支持条件合计,对分组合计,分合计,总计等只需简单地设置属性即可。   7、完全支持D5--D7,BCB5--BCB6。   8、报表中可以在自认合适的事件(on beforeprint,on afterprint等)中加入程序脚本,以控制、或实现更复杂的打印效果。   9、更新迅速,可根据使用人员与用户的意见,不断的加入新的功能。   10、多种格式转换,可以把做出的报表转换为html,xls,pdf,bmp,jpeg等等格式。   11、自动对超长记录折行,超长的内容也会自动折行,中文换行不会乱码。   12、首家支持缩放打印功能,可以根据打印时选择的纸张自动缩放报表。   13、首家支持即打即停.   14、首家提供类似excel的报表设计器,给你足够灵活方表的报表设计方式。   15、首家提供双报表设计器(第一种,第二种),满足所有的需求。   16、更是提供类似于ObjectPascal的script,实现特殊功能。   17、首家提供web,IntraWeb中的报表解决方案。   18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。   19、首家提供合并单元格功能,更加适应处理复杂的中文报表。   20、自动填空行,每打印数量等细节处理更完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值