Delphi自定义控件开发.pdf

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi 控件开发浅入深出 ( 一 ) 有人说过“不会开发控件的 Delphi 程序员不是真正的程序员”。 Delphi 正是由于高度的可扩 展性和大量的第三方控件的支持才能吸引无数程序员挑剔的目光。 即使是由于工作需要使用其他 开发工具的开发者也常常怀念和 Delphi 度过的日日夜夜。 接触 Delphi 已经一年多了, 从当初对 着 Delphi 组件面板上上百个控件不知所措,到现在已经可以根据需要开发一些有一定难度的控 件,其中走过的路是十分艰辛的,所以特此写下这篇文章, 将自己的经验留给后来者, 也算是献 给“同门师弟”的一份厚礼吧! 需要说明的一点是:在写这篇文章之前我假设读者已经对面向对象的基本知识有一定的了 解,所以对于文章中面向对象相关的概念将不再展开讲述。 一、牛刀小试- TURLLabel 控件 我们从一个能够添加超链接的标签控件开始我们的控件开发之旅吧! 既然是 Label 我们就从 Tlabel 派生这个控件吧 ( 其实从 TcustomLabel 派生最好,不过出于简单 的目的我们这里先从 Tlabel 派生 ) ! 1、选择“ File ”- > “New”- > “Component ”, 将弹出如下的对话框: 在 Ancestor type 中选择 Tlabel ,ClassName 中填入 TURLLabel( 名字可以任意取,但是要以 T 开头,否则的话会出现注册控件时候的问题 ) 。这里 Ancestor type 代表控件的基类, TURLLabel 代表控件的名称。 2 、超链接的视觉效果是带下划线的文字,所以我们覆盖父类的构造函数,在构造函数里修改控 件的字体属性。 constructor TUrlLabel.Create(AOwner:TComponent); begin inherited Create(AOwner); Cursor:=crHandPoint; Font.Style:= [fsUnderline]; end; 代码解释: (1) inherited Create(AOwner); 这句的意思是执行父类的构造函数。 我们制作控件的时候, 如果覆盖了父类的构造函数,那么在新的构造函数中一定要首先调用父类的构造函 数,否则会引起错误。这是很多初学控件开发的人常常遇到的问题。当您把自己开发 的控件从面板上拖放到窗体时, 如果跳出一个“ Access Violent ”的错误对话框的话, 那么十有八九是因为您忘了调用父类的构造函数。 (2) Cursor:=crHandPoint; Font.Style:= [fsUnderline]; 这三句的意思是修改标签的视觉效果。 Cursor:=crHandPoint; 是设定当鼠标移动到控 件上时鼠标的形状为“手型”; Font.Style:= [fsUnderline]; 是设定文字的下划线效果。 3、既然是超链接控件,那么我们肯定要能使用户在使用控件的时候能在“ Object Inspector ” 中对超链接的 URL进行修改,所以我们应该为控件增加一个 Url 属性。 属性是访问控件字段的接口。通过属性,控件使用者可以间接读或者写控件的内部字段改变 控件的状态。组件属性的声明需要以下几部分:属性名、属性类型、读方法(或读字段)、写方 法(或写字段。如果没有写方法或写字段,则该属性为只读属性)。 属性在控件类声明的 Published 部分声明。在 Published 中声明的属性可以在设计期通过 “Object Inspector ”对属性值进行修改。 如果声明在 Public 部分则不可以在设计期通过 “Object Inspector ”对属性值进行修改

文档评论(0)

zxj41232 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档