第十九章 Delphi自定義部件開發(fā)
Delphi除了支持使用可視化部件所見即所得地建立應(yīng)用程序外,還支持為開發(fā)應(yīng)用而設(shè)計自己的部件。
在本章中將闡述如何為Delphi應(yīng)用程序編寫部件。這一章將達到兩個目的:
● 教你如何自定義部件
● 使你的部件成為Delphi環(huán)境的有機組合部分
19.1 Delphi部件原理
19.1.1 什么是部件
部件是Delphi應(yīng)用程序的程序構(gòu)件。盡管大多數(shù)部件代表用戶界面的可見元素,但部件也可以是程序中的不可見元素,如數(shù)據(jù)庫部件。為弄清什么是部件可以從三個方面來考察它:功能定義、技術(shù)定義和經(jīng)驗定義。
1. 部件的功能定義
從最終用戶角度,部件是在Component Palette上選擇的,并在窗體設(shè)計窗口和代碼窗口中操作的元素。從部件編寫者角度,部件是代碼中的對象。在編寫部件之前,你應(yīng)用相當熟悉已有的Delphi部件,這樣才能使你的部件適合用戶的需要。編寫部件的目標之一是使部件盡可能的類似其它部件。
2. 部件的技術(shù)定義
從最簡單的角度看,部件是任何從TComponent繼承的對象。TComponent定義了所有部件必須要的、最基本的行為。例如,出現(xiàn)在Component Palette上和在窗體設(shè)計窗口中編輯的功能。但是TComponent并不知如何處理你的部件的具體功能,因此,你必須自己描述它。
3. 部件編寫者自己的定義。
在實際編程中,部件是能插入Delphi開發(fā)環(huán)境的任何元素。它可能具有程序的各種復(fù)雜性。簡而言之,只要能融入部件框架,部件就是你用代碼編寫的一切。部件定義只是接口描述,本章將詳細闡述部件框架,說明部件的有限性,正如說明編程的有限性。本章不準備教你用所給語言編寫每一種部件,只能告訴編定代碼的方法和怎樣使部件融入Delphi環(huán)境。
19.1.2 編寫部件的不同之處
在Delphi環(huán)境中建立部件和在應(yīng)用程序中使用部件有三個重要差別:
● 編寫部件的過程是非可視化的
● 編寫部件需要更深入的關(guān)于對象的知識
● 編寫部件需要遵循更多的規(guī)則
1. 編寫部件是非可視化的
編寫部件與建立Delphi應(yīng)用最明顯的區(qū)別是部件編寫完全以代碼的形式進行,即非可視化的 。因為Delphi應(yīng)用的可視化設(shè)計需要已完成的部件,而建立這些部件就需要用Object Pascal 代碼編寫。
雖然你無法使用可視化工具來建立部件,但你能運用 Delphi開發(fā)環(huán)境的所有編程特性如代碼編輯器、集成化調(diào)試和對象瀏覽。
2. 編寫部件需要更深的有關(guān)對象的知識
除了非可視化編程之外,建立部件和使用它們的最大區(qū)別是:當建立新部件時,需要從已存部件中繼承產(chǎn)生一個新對象類型,并增加新的屬性和方法。另一方面,部件使用者,在建立Delphi應(yīng)用時,只是使用已有部件。在設(shè)計階段通過改變部件屬性和描述響應(yīng)事件的方法來定制它們的行為。
當繼承產(chǎn)生一個新對象時,你有權(quán)訪問祖先對象中對最終用戶不可見的部分。這些部分被稱為protected界面的。在很大部分的實現(xiàn)上,后代對象也需要調(diào)用他們的祖先對象的方法,因此,編寫部件者應(yīng)相當熟悉面向?qū)ο缶幊烫匦浴?/P>
3. 編寫部件要遵循更多的規(guī)則
編寫部件過程比可視化應(yīng)用生成采用更傳統(tǒng)的編程方法,與使用已有部件相比,有更多的規(guī)則要遵循。在開始編寫自己的部件之前,最重要的事莫過于熟練應(yīng)用Delphi自帶的部件,以得到對命名規(guī)則以及部件用戶所期望功能等的直觀認識。部件用戶期望部件做到的最重要的事情莫過于他們在任何時候能對部件做任何事。編寫滿足這些期望的部件并不難,只要預(yù)先想到和遵循規(guī)則。
相關(guān)推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |