這篇文章算是對我前段時間學習的乙個學習總結,以及對自己學習過程的乙個回顧。本文通過乙個簡單的例子來盡可能的展示
vcl元件開發的各個方面,本文針對即將學習元件開發的初學者,如果你已經熟悉元件開發或認為本文內容過於基礎簡單,那麼本文對你毫無用處。閱讀本文,假設你已經熟悉
delphi
的普通程式設計以及
vcl的結構層次,還有一些重要的關鍵字:
published
、property等。(
注:本文內容建立在
delphi5.0
及以上版本)
1、顯示系統的當前時間(包括設定鬧鐘)。
2、跑錶。
3、倒計時。這是乙個簡單的例子,然而我們將在這個例子中盡可能多的用到
delphi
·元件和元件包
·元件的屬性類別
·元件的屬性編輯器
·元件編輯器
一、元件和元件包,以及一些你應該知道的檔案型別:
元件和元件包的關係就如同普通工程中
unit
和工程檔案的關係一樣,通常你所安裝的元件都是以元件包的形式發布的,乙個元件包中可以有很多個元件,在元件開發中,元件包就是專案的工程檔案
.為了開始開發我們的元件(我們把他叫做
tclock
)並將它包括在我們自己的元件包(
clockpackage
)中,我們選擇
file
ànew
àother
在彈出的視窗中的
new頁選擇
package
新建乙個元件包,得到乙個元件包視窗,檢視這個元件包的原檔案(
.dpk
),得到以下**:
package clockpackage;
…….…….
requires
rtl;
end.
這個檔案其實就是元件開發中的工程檔案,
requires
關鍵字指示了元件包所需元件包的列表,隨著向元件包中加入元件(類似於單元檔案),你還會看到
contains
關鍵字,指示了元件包所包含的元件,你可以通過元件包視窗中的
add和
remove
按紐來新增新的元件和刪除已有的元件。另外這個**中所包含的大量的編譯器開關大多都可以在元件包窗體上的
options
中設定。這裡需要補充說明的是元件包的
3種重要屬性(都在
options
中):designtime only
、runtime only
、designtime and runtime(這3
個詞的意思有英語基礎的朋友應該都知道吧),對於大多數的元件包我們只要選擇最後乙個就可以了,然而有些元件包設計為只執行時(這樣你用這套元件開發的程式不能脫離元件而單獨執行,元件包也不能被安裝),有些元件包被設計為只設計時(這將在後文有更詳細的說明)。
了解了元件和元件包,我們對元件開發中可能出現的一些你沒有見過的檔案做一些說明:
dpk檔案既元件包的原**;
bpl檔案,元件包編譯後的結果,在沒有發布
dpk的情況下可以通過
bpl來安裝元件包到
delphi
(project
àoptions
àpackages
àadd
);pas
在這裡就是元件包中元件的原**了;
dcu為
pas編譯後的結果,在你選擇將元件包含進元件包時(
contains
關鍵字),你可以選擇發布原**或是不發布(
dcu檔案);
dcp如果你將元件作為執行時元件,聯結器將使用該檔案。
二、開始開發元件:
了解了上面的知識後,我們就可以開始開發元件了!在元件窗體中單擊
add,選擇
newcomponent
頁,在第乙個組合框中選擇我們的元件將要繼承自哪個類(通常新的元件是通過繼承已有的元件來開發的),由於這個元件的主要作用是要顯示時間、跑錶、倒計時種的文字資訊,所以我們選擇繼承自
tcustomlabel
(由於我們並不需要
tlabel
的全部功能,我們選擇了能夠隱藏
tlabel
屬性並有選擇的發布它的屬性的
tcustomlabel
類)。接下來為我們的新元件取乙個名字
tclock
,然後指定我們想把元件安裝到哪乙個頁中,這裡我們自己鍵入乙個
clockandtime
頁,這將出現在
registercomponents
過程中(後面會詳細說明),選擇好檔案儲存的路徑後(最好把它和元件
dpk包放在同一目錄)確認。這是元件包窗體中的
contains
下已經多了我們剛才建立的元件的檔案,雙擊它開始編寫**。
在**中我們需要注意在
inte***ce
部分的乙個新的過程:procedure register;(注意:
delphi
規定register的
r必須大寫,這是乙個保留字),這個過程是作為每乙個元件所必須有的,它完成元件的註冊,包括元件本身以及如屬性編輯器等多種元件特性的註冊):
procedure register;
begin
registercomponents('clockandtime', [tclock]);
//這個過程註冊元件本身,注意到前面定義的
clockandtime
頁了嗎?
//這裡在後面還會出現一些新的過程,包括註冊元件的屬性類別等等。
end;
通過例項看VCL元件開發全過程
這篇文章算是對我前段時間學習的乙個學習總結,以及對自己學習過程的乙個回顧。本文通過乙個簡單的例子來盡可能的展示vcl元件開發的各個方面,本文針對即將學習元件開發的初學者,如果你已經熟悉元件開發或認為本文內容過於基礎簡單,那麼本文對你毫無用處。閱讀本文,假設你已經熟悉delphi的普通程式設計以及vc...
通過例項看VCL元件開發全過程(一)
這篇文章算是對我前段時間學習的乙個學習總結,以及對自己學習過程的乙個回顧。本文通過乙個簡單的例子來盡可能的展示vcl元件開發的各個方面,本文針對即將學習元件開發的初學者,如果你已經熟悉元件開發或認為本文內容過於基礎簡單,那麼本文對你毫無用處。閱讀本文,假設你已經熟悉delphi的普通程式設計以及vc...
Ext元件渲染render的全過程詳述
模板模式是設計模式中很重要的乙個知識點,我在模式總結 模板方法這篇文章中已有總結,在物件導向設計中有著舉足輕重的地位。在ext中更是發揮的淋漓盡致,為什麼這麼說呢?ext中的元件有著很深的繼承關係,很多方法都有著重複,而且不僅 是 上的重複,更多的是流程上的重複 比方說,ext.panel吧,將乙個...