第十九章Delphi自定义部件开发(二)..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十九章Delphi自定义部件开发(二).

19.2.2 Delphi部件编程  19.2.2.1 创建属性   属性(Property)是部件中最特殊的部分,主要因为部件用户在设计时可以看见和操作它们,并且在交互过程中能立即得到返回结果。属性也很重要,因为如果将它们设计好后,将使用户更容易地使用,自己维护起来也很容易。   为了使你在部件中更好地使用属性,本部分将介绍下列内容:  ● 为什么要创建属性   ● 属性的种类  ● 公布(publishing)继承的属性   ● 定义部件属性   ● 编写属性编辑器     1. 为什么要创建属性   属性提供非常重要的好处,最明显的好处是属性在设计时能出现在Object Inspector窗口中,这将简化编程工作,因为你只需读用户所赋的值,而不要处理构造对象的参数。   从部件使用者的观点看,属性象变量。用户可以给属性赋值或读值,就好象属性是对象的域。   从部件编写者的观点看属性比对象的域有更强的功能;   ⑴ 用户可以在设计时设置属性   这是非常重要的,因为不象方法,只能在运行时访问。属性使用户在运行程序之前就能定制部件,通常你的部件不应包含很多的方法,它们的功能可以通过属性来实现。   ⑵ 属性能隐藏详细的实现细节   ⑶ 属性能引起简单地赋值之外的响应,如触发事件   ⑷ 用于属性的实现方法可以是虚拟方法,这样看似简单的属性在不同的部件中,将实现不同的功能。    2. 属性的类型   属性可以是函数能返回的任何类型,因为属性的实现可以使用函数。所有的Pascal类型,兼容性规则都适用属性。为属性选择类型的最重要的方面是不同的类型出现在Object Inspector窗口中的方式不同。Object Inspector将按不同的类型决定其出现的方式。 你也能在注册部件时描述不同的属性编辑器。   下表列出属性出现在Object Inspector窗口中的方式   表19.3 属性出现在Object Inspector窗口中的方式 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 属性类型       处 理 方 式 ─────────────────────────────────────── 简单类型   Numeric、Character和 String属性出现在Object Inspector中,用户可 以直接编辑 枚举类型 枚举类型的属性显示值的方式定义在代码中。选择时将出现下拉   式列表框,显示所有的可能取值。 集合类型 集合类型出现在Object Inspector窗口中时正如一个集合,展开后,用          户通过将集合元素设为True或False来选择。 对象类型 作为对象的属性本身有属性编辑器,如果对象有自己的published属 性,用户在Object Inspector中通过展开对象属性列,可以独立编辑它们, 对象类型的属性必须从TPersistent继承。 数组类型 数组属性必须有它们自己的属性编辑器,Object Inspector没有内嵌对数 组属性编辑的支持。   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   3. 公布继承的属性   所有部件都从祖先类型继承属性。当你从已有部件继承时,新部件将继承祖先类型的所有属性。如果你继承的是抽象类,则继承的属性是protected或public,但不是published。如想使用户访问protected或public属性,可以将该属性重定义为published。如果你使用TWinControl继承,它继承了Ctl3D属性,但是protected的,因此用户在设计和运行时不能访问Ctl3D,通过在新部件中将Ctl3D重声明为published,就改变了Ctl3D的访问级别。下面的代码演示如何将Ctl3D声明为published,使之在设计时可被访问。     type TSampleComponent=class(TWinControl) published property Ctl3D; end;   4. 定义部件属性   ⑴ 属性的声明   声明部件的属性,你要描述:  ● 属性名   ● 属性的类型   ● 读和设置属性值的方法     至少,部件属性应当定义在部件对象声明的public部分,这样可以在运行时很方便地从外部访问;为了能在设计时编辑属性,应当将属性在published部分声明,这样属性能自动显示在Object Inspector窗口中。下面是典型的属性声明:     type TYourComponent=class(TComponent) … private FCount: Integer { 内部存储域 } function GetCo

文档评论(0)

xznh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档