透過例項看VCL元件開發全過程(一) (轉)
透過例項看VCL開發全過程
這篇文章算是對我前段時間學習的一個學習總結,以及對自己學習過程的一個回顧。本文透過一個簡單的例子來儘可能的展示VCL元件開發的各個方面,本文針對即將學習元件開發的初學者,如果你已經熟悉元件開發或認為本文內容過於基礎簡單,那麼本文對你毫無用處。閱讀本文,假設你已經熟悉的普通設計以及vcl的結構層次,還有一些重要的關鍵字:published、property等。(注:本文內容建立在delphi5.0及以上版本)
:namespace prefix = o ns = "urn:schemas--com::office" />
在這篇文章中我們將建立一個和時間有關的元件,這個元件透過設定它的不同狀態有以下基本功能:1、顯示的當前時間(包括設定鬧鐘)。2、跑表。3、倒數計時。這是一個簡單的例子,然而我們將在這個例子中儘可能多的用到delphi在元件開發中的多種特性,你可以透過以下列舉出的本文涉及特性有選擇的閱讀:
·元件和元件包
·元件的屬性類別
·元件的屬性編輯器
·元件編輯器
一、元件和元件包,以及一些你應該知道的型別:
元件和元件包的關係就如同普通工程中unit和工程檔案的關係一樣,通常你所的元件都是以元件包的形式釋出的,一個元件包中可以有很多個元件,在元件開發中,元件包就是專案的工程檔案.為了開始開發我們的元件(我們把他叫做TClock)並將它包括在我們自己的元件包(ClockPackage)中,我們選擇Fileànewàother在彈出的視窗中的New頁選擇Package新建一個元件包,得到一個元件包視窗,檢視這個元件包的原檔案(.dpk),得到以下程式碼:
package ClockPackage;
{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
…….
…….
{$DESCRIPTION 'Our Clock Pack'}
{$IMPLICITBUILD OFF}
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下已經多了我們剛才建立的元件的檔案,雙擊它開始編寫程式碼。
在程式碼中我們需要注意在interface部分的一個新的過程:procedure Register;(注意:delphi規定Register的R必須大寫,這是一個保留字),這個過程是作為每一個元件所必須有的,它完成元件的註冊,包括元件本身以及如屬性編輯器等多種元件特性的註冊):
procedure Register;
begin
RegisterComponents('ClockAndTime', [TClock]);
//這個過程註冊元件本身,注意到前面定義的ClockAndTime頁了嗎?
//這裡在後面還會出現一些新的過程,包括註冊元件的屬性類別等等。
end;
在下一篇中我們將給出這個元件的全部原始碼。
(未完待續)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981896/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 透過例項看VCL元件開發全過程(二) (轉)元件
- 例項詳解不同VLAN間通訊(轉發過程)
- 一個Flutter中臺元件的開發過程Flutter元件
- 需求過程化分析方法-例項分享
- mysql 儲存過程簡單例項MySql儲存過程單例
- PHP呼叫MYSQL儲存過程例項PHPMySql儲存過程
- mysql儲存過程簡單例項MySql儲存過程單例
- JavaScript:從Callback到Async的發展過程——例項演示JavaScript
- 微信公眾號支付開發全過程(Java 版)Java
- 敏捷開發過程敏捷
- solaris 10 網路配置全過程(轉)
- 11GR2 Active Duplicate過程(單例項對單例項)單例
- webpack(8)vue元件化開發的演變過程WebVue元件化
- 透過SDK函式實現WIN32應用程式的唯一例項。 (轉)函式Win32
- k8s透過api介面刪除例項K8SAPI
- Spring Ioc原始碼分析系列--Bean例項化過程(一)Spring原始碼Bean
- 麻將遊戲開發全過程步驟瞭解遊戲開發
- Java初學者:Jsp開發環境配置全過程JavaJS開發環境
- mysql儲存過程一例MySql儲存過程
- 一個簡易的proxy程式的開發過程(2)(轉)
- 透過等待看資料庫資料庫
- 透過proc看記憶體記憶體
- Mybatis原始碼分析(三)通過例項來看typeHandlersMyBatis原始碼
- 網頁訪問全過程剖析[轉].md網頁
- ORACLE事務和例項恢復過程梳理Oracle
- mysql儲存過程經典例項詳解MySql儲存過程
- Python中類建立和例項化過程Python
- 建立一個standby database的全過程Database
- 從硬碟安裝debian詳細過程(透過chroot完成)(轉)硬碟
- 開發一個Node命令列小玩具全過程--高顏統計工具命令列
- java web開發--Servlet學習之HelloWorld 從部署到開發全過程JavaWebServlet
- 學在 VC ,用在 VB - 透過語言看 "世界" (轉)
- 【計算機網路】透過ensp實驗分析二三層資料包轉發過程計算機網路
- MySql特性發展過程(轉)MySql
- 談軟體開發過程的改進 (轉)
- 透過 OKR 進行專案過程管理OKR
- Spring原始碼淺析之bean例項的建立過程(一)Spring原始碼Bean
- Spring MVC 第一次訪問例項化過程SpringMVC