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