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