有人說(shuō)過(guò)“不會(huì)開(kāi)發(fā)控件的Delphi程序員不是真正的程序員”。Delphi正是由于高度的可擴(kuò)展性和大量的第三方控件的支持才能吸引無(wú)數(shù)程序員挑剔的目光。即使是由于工作需要使用其他開(kāi)發(fā)工具的開(kāi)發(fā)者也常常懷念和Delphi度過(guò)的日日夜夜。接觸Delphi已經(jīng)一年多了,從當(dāng)初對(duì)著Delphi組件面板上上百個(gè)控件不知所措,到現(xiàn)在已經(jīng)可以根據(jù)需要開(kāi)發(fā)一些有一定難度的控件,其中走過(guò)的路是十分艱辛的,所以特此寫(xiě)下這篇文章,將自己的經(jīng)驗(yàn)留給后來(lái)者,也算是獻(xiàn)給“同門(mén)師弟”的一份厚禮吧!
需要說(shuō)明的一點(diǎn)是:在寫(xiě)這篇文章之前我假設(shè)讀者已經(jīng)對(duì)面向?qū)ο蟮幕局R(shí)有一定的了解,所以對(duì)于文章中面向?qū)ο笙嚓P(guān)的概念將不再展開(kāi)講述。
一、牛刀小試-TURLLabel控件
我們從一個(gè)能夠添加超鏈接的標(biāo)簽控件開(kāi)始我們的控件開(kāi)發(fā)之旅吧!
既然是Label我們就從Tlabel派生這個(gè)控件吧(其實(shí)從TcustomLabel派生最好,不過(guò)出于簡(jiǎn)單的目的我們這里先從Tlabel派生)!
1、選擇“File”->“New”->“Component”,將彈出如下的對(duì)話框:
在Ancestor type中選擇Tlabel,ClassName中填入TURLLabel(名字可以任意取,但是要以T開(kāi)頭,否則的話會(huì)出現(xiàn)注冊(cè)控件時(shí)候的問(wèn)題)。這里Ancestor type代表控件的基類(lèi),TURLLabel代表控件的名稱(chēng)。
2、超鏈接的視覺(jué)效果是帶下劃線的文字,所以我們覆蓋父類(lèi)的構(gòu)造函數(shù),在構(gòu)造函數(shù)里修改控件的字體屬性。