- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi控件开发浅入深出
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”对属性值进行修改,但是可以在运行时通过代码进行读写。
在类声明的Private访问区域中添加如下字段声明:
??FUrl: String;
??在类声明中添加Published访问区域,并添加如下代码
property Url: String read FUrl write FUrl;
这段声明的意思是为控件添加一个Url属性,属性的类型是string,在读Url属性时返回Furl的值,在写 Url属性时设定Furl的值。
4、超链接的视觉效果有了,下面使它点击时调用浏览器打开Url指定的网址。
在Delphi控件的事件处理中很多事件都有对应的一个调度方法(这是设计模式中模板模式的典型应用)。比如在鼠标点击控件时,控件会首先调用Click方法,由Click方法进行相应的处理,而绝大多数调度方法都会引发一个事件句柄(关于事件句柄我们后边有深入的介绍)。比如Tlabel控件中在用户用点击Label时会首先调用控件的Click方法(被声明为Protected级别),Click方法再触发OnClick事件。所以我们只要覆盖Tlabel的Click方法进行我们自己的处理就可以了。
在Protected部分添加如下的声
您可能关注的文档
最近下载
- 精品解析:广东省广州市越秀区第二中学2022-2023学年七年级上学期期中考试英语试题(解析版).docx VIP
- 江南快速 西威+TOMCB+LCB2原理图.pdf
- 城市人行天桥与人行地道技术规范(征求意见稿).doc
- 津津有味·读经典Level1《格林童话选》译文和答案.docx
- 金融企业会计第三版孟艳琼习题答案.doc
- 各层级护士考核内容及评价标准.pdf
- 津津有味·读经典Level1《柳林风声》译文和答案.pdf
- 【西门子】SINUMERIK 840D sl 操作组件 - TCU 30.3.pdf
- 第17课《昆明的雨》说课课件.pptx VIP
- 倾斜摄影测量实景三维建模技术规程.pdf VIP
文档评论(0)