?? 047.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第十九章 Delphi自定義部件開發(一)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第十九章 Delphi自定義部件開發(一)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第十九章 Delphi自定義部件開發(一)">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="048.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="046.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第十九章 Delphi自定義部件開發(一)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p> <font face="Arial" size="3">Delphi</font>除了支持使用可視化部件所見即所得地建立應用程序外,還支持為開發應用而設計自己的部件。</p>
<p> 在本章中將闡述如何為</font><font face="Arial" size="3">Delphi</font><font
face="宋體" lang="ZH-CN" size="3">應用程序編寫部件。這一章將達到兩個目的:</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">教你如何自定義部件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">使你的部件成為</font><font face="Arial" size="3">Delphi</font><font
face="宋體" lang="ZH-CN" size="3">環境的有機組合部分</font><font face="Arial"
size="3"></p>
<p> </p>
<p>19.1 Delphi</font><font face="宋體" lang="ZH-CN" size="3">部件原理</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.1.1 </font><font face="宋體" lang="ZH-CN" size="3">什么是部件</p>
<p> </p>
<p> 部件是</font><font face="Arial" size="3">Delphi</font><font face="宋體"
lang="ZH-CN" size="3">應用程序的程序構件。盡管大多數部件代表用戶界面的可見元素,但部件也可以是程序中的不可見元素,如數據庫部件。為弄清什么是部件可以從三個方面來考察它:功能定義、技術定義和經驗定義。</p>
<p> </font><font face="Arial" size="3">1. </font><font face="宋體" lang="ZH-CN"
size="3">部件的功能定義</p>
<p> 從最終用戶角度,部件是在</font><font face="Arial" size="3">Component
Palette</font><font face="宋體" lang="ZH-CN" size="3">上選擇的,并在窗體設計窗口和代碼窗口中操作的元素。從部件編寫者角度,部件是代碼中的對象。在編寫部件之前,你應用相當熟悉已有的</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">部件,這樣才能使你的部件適合用戶的需要。編寫部件的目標之一是使部件盡可能的類似其它部件。</p>
<p> </font><font face="Arial" size="3">2. </font><font face="宋體" lang="ZH-CN"
size="3">部件的技術定義</p>
<p> 從最簡單的角度看,部件是任何從</font><font face="Arial" size="3">TComponent</font><font
face="宋體" lang="ZH-CN" size="3">繼承的對象。</font><font face="Arial" size="3">TComponent</font><font
face="宋體" lang="ZH-CN" size="3">定義了所有部件必須要的、最基本的行為。例如,出現在</font><font
face="Arial" size="3">Component Palette</font><font face="宋體" lang="ZH-CN" size="3">上和在窗體設計窗口中編輯的功能。但是</font><font
face="Arial" size="3">TComponent</font><font face="宋體" lang="ZH-CN" size="3">并不知如何處理你的部件的具體功能,因此,你必須自己描述它。</p>
<p> </font><font face="Arial" size="3">3. </font><font face="宋體" lang="ZH-CN"
size="3">部件編寫者自己的定義。</p>
<p> 在實際編程中,部件是能插入</font><font face="Arial" size="3">Delphi</font><font
face="宋體" lang="ZH-CN" size="3">開發環境的任何元素。它可能具有程序的各種復雜性。簡而言之,只要能融入部件框架,部件就是你用代碼編寫的一切。部件定義只是接口描述,本章將詳細闡述部件框架,說明部件的有限性,正如說明編程的有限性。本章不準備教你用所給語言編寫每一種部件,只能告訴編定代碼的方法和怎樣使部件融入</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">環境。</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.1.2 </font><font face="宋體" lang="ZH-CN" size="3">編寫部件的不同之處</p>
<p> </p>
<p> 在</font><font face="Arial" size="3">Delphi</font><font face="宋體"
lang="ZH-CN" size="3">環境中建立部件和在應用程序中使用部件有三個重要差別:</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">編寫部件的過程是非可視化的</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">編寫部件需要更深入的關于對象的知識</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">編寫部件需要遵循更多的規則</p>
<p> </p>
<p> </font><font face="Arial" size="3">1. </font><font face="宋體" lang="ZH-CN"
size="3">編寫部件是非可視化的</p>
<p> 編寫部件與建立</font><font face="Arial" size="3">Delphi</font><font
face="宋體" lang="ZH-CN" size="3">應用最明顯的區別是部件編寫完全以代碼的形式進行,即非可視化的</font><font
face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN" size="3">。因為</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">應用的可視化設計需要已完成的部件,而建立這些部件就需要用</font><font
face="Arial" size="3">Object Pascal </font><font face="宋體" lang="ZH-CN" size="3">代碼編寫。</p>
<p> 雖然你無法使用可視化工具來建立部件,但你能運用</font><font
face="Arial" size="3"> Delphi</font><font face="宋體" lang="ZH-CN" size="3">開發環境的所有編程特性如代碼編輯器、集成化調試和對象瀏覽。</p>
<p> </font><font face="Arial" size="3">2. </font><font face="宋體" lang="ZH-CN"
size="3">編寫部件需要更深的有關對象的知識</p>
<p> 除了非可視化編程之外,建立部件和使用它們的最大區別是:當建立新部件時,需要從已存部件中繼承產生一個新對象類型,并增加新的屬性和方法。另一方面,部件使用者,在建立</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">應用時,只是使用已有部件。在設計階段通過改變部件屬性和描述響應事件的方法來定制它們的行為。</p>
<p> 當繼承產生一個新對象時,你有權訪問祖先對象中對最終用戶不可見的部分。這些部分被稱為</font><font
face="Arial" size="3">protected</font><font face="宋體" lang="ZH-CN" size="3">界面的。在很大部分的實現上,后代對象也需要調用他們的祖先對象的方法,因此,編寫部件者應相當熟悉面向對象編程特性。</p>
<p> </font><font face="Arial" size="3">3. </font><font face="宋體" lang="ZH-CN"
size="3">編寫部件要遵循更多的規則</p>
<p> 編寫部件過程比可視化應用生成采用更傳統的編程方法,與使用已有部件相比,有更多的規則要遵循。在開始編寫自己的部件之前,最重要的事莫過于熟練應用</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">自帶的部件,以得到對命名規則以及部件用戶所期望功能等的直觀認識。部件用戶期望部件做到的最重要的事情莫過于他們在任何時候能對部件做任何事。編寫滿足這些期望的部件并不難,只要預先想到和遵循規則。</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.1.3 </font><font face="宋體" lang="ZH-CN" size="3">建立部件過程概略</p>
<p> </p>
<p> 簡而言之,建立自定義部件的過程包含下列幾步: </font><font
face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
</font><font face="宋體" lang="ZH-CN" size="3">建立包含新部件的庫單元</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">從已有部件類型中繼承得到新的部件類型</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">增加屬性、方法和事件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">用</font><font face="Arial" size="3">Delphi</font><font face="宋體"
lang="ZH-CN" size="3">注冊部件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">為部件的屬性方法和事件建立</font><font face="Arial" size="3">Help</font><font
face="宋體" lang="ZH-CN" size="3">文件</p>
<p> </p>
<p> 如果完成這些工作,完整的部件包含下列</font><font face="Arial"
size="3">4</font><font face="宋體" lang="ZH-CN" size="3">個文件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">編譯的庫單元 </font><font face="Arial" size="3"> ( .DCU</font><font
face="宋體" lang="ZH-CN" size="3">文件</font><font face="Arial" size="3">)</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
</font><font face="宋體" lang="ZH-CN" size="3">選擇板位圖 </font><font
face="Arial" size="3"> (.DCR</font><font face="宋體" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3">)</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
Help</font><font face="宋體" lang="ZH-CN" size="3">文件 </font><font
face="Arial" size="3"> (.HLP</font><font face="宋體" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3">)</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
Help-keyword</font><font face="宋體" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3"> (.KWF</font><font face="宋體" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3">)</p>
<p> </p>
<p>19.2 Delphi</font><font face="宋體" lang="ZH-CN" size="3">部件編程方法</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.2.1 Delphi</font><font face="宋體" lang="ZH-CN" size="3">部件編程概述</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.2.1.1 Delphi</font><font face="宋體" lang="ZH-CN" size="3">可視部件類庫</p>
<p> </p>
<p> </font><font face="Arial" size="3"> Delphi</font><font face="宋體" lang="ZH-CN"
size="3">的部件都是可視部件類庫(</font><font face="Arial" size="3">VCL</font><font
face="宋體" lang="ZH-CN" size="3">)的對象繼承樹的一部分,下面列出組成</font><font
face="Arial" size="3">VCL</font><font face="宋體" lang="ZH-CN" size="3">的對象的關系。</font><font
face="Arial" size="3">TComponent</font><font face="宋體" lang="ZH-CN" size="3">是</font><font
face="Arial" size="3">VCL</font><font face="宋體" lang="ZH-CN" size="3">中每一個部件的共同祖先。</font><font
face="Arial" size="3">TComponent</font><font face="宋體" lang="ZH-CN" size="3">提供了</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">部件正常工作的最基本的屬性和事件。庫中的各條分支提供了其它的更專一的功能。 </p>
</font><font face="Arial" size="3"><p></font><font face="宋體" lang="ZH-CN" size="3">當建立部件時,通過從對象樹中已有的對象繼承獲得新對象,并將其加入</font><font
face="Arial" size="3">VCL</font><font face="宋體" lang="ZH-CN" size="3">中。 </p>
</font><font face="Arial" size="3"><p>19.2.1.2 </font><font face="宋體" lang="ZH-CN"
size="3">建立部件的起點 </p>
<p> 部件是你在設計時想操作的任意程序元素。建立新部件意味著從已有類型中繼承得到新的部件對象類。</font><font
face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">建立新部件的主要途徑如下:</p>
<p> </font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN" size="3">●</font><font
face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN" size="3">修改已有的控制</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN"
size="3">建立原始控制</font><font face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3"> ●</font><font face="Arial"
size="3"> </font><font face="宋體" lang="ZH-CN" size="3">建立圖形控制</p>
<p> </font><font face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN" size="3">●</font><font
face="Arial" size="3"> </font><font face="宋體" lang="ZH-CN" size="3">建立</font><font
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -