?? 048.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="049.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="047.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%">
<font face="Arial" size="3"><p>19.2.2 Delphi</font><font face="宋體" lang="ZH-CN"
size="3">部件編程 </p>
</font><font face="Arial" size="3"><p>19.2.2.1 </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">Property</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"> ●</font><font size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">為什么要創建屬性</p>
<p> </font><font size="3"> </font><font face="宋體" lang="ZH-CN" size="3">●</font><font
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 size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">公布</font><font face="Arial" size="3">(publishing)</font><font
face="宋體" lang="ZH-CN" size="3">繼承的屬性</p>
<p> </font><font size="3"> </font><font face="宋體" lang="ZH-CN" size="3">●</font><font
size="3"> </font><font face="宋體" lang="ZH-CN" size="3">定義部件屬性</font><font
size="3"> </font><font face="宋體" lang="ZH-CN" size="3"></p>
<p> </font><font size="3"> </font><font face="宋體" lang="ZH-CN" size="3">●</font><font
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">Object Inspector</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 size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">⑴</font><font size="3"> </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"> </font><font size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">⑵</font><font size="3"> </font><font face="宋體"
lang="ZH-CN" size="3">屬性能隱藏詳細的實現細節</p>
<p> </font><font size="3"> </font><font face="宋體" lang="ZH-CN" size="3">⑶</font><font
size="3"> </font><font face="宋體" lang="ZH-CN" size="3">屬性能引起簡單地賦值之外的響應,如觸發事件</p>
<p> ⑷</font><font size="3"> </font><font face="宋體" lang="ZH-CN" size="3">用于屬性的實現方法可以是虛擬方法,這樣看似簡單的屬性在不同的部件中,將實現不同的功能。</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3"> </font><font face="Arial" size="3">2.
</font><font face="宋體" lang="ZH-CN" size="3">屬性的類型</p>
<p> 屬性可以是函數能返回的任何類型,因為屬性的實現可以使用函數。所有的</font><font
face="Arial" size="3">Pascal</font><font face="宋體" lang="ZH-CN" size="3">類型,兼容性規則都適用屬性。為屬性選擇類型的最重要的方面是不同的類型出現在</font><font
face="Arial" size="3">Object Inspector</font><font face="宋體" lang="ZH-CN" size="3">窗口中的方式不同。</font><font
face="Arial" size="3">Object Inspector</font><font face="宋體" lang="ZH-CN" size="3">將按不同的類型決定其出現的方式。</font><font
face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">你也能在注冊部件時描述不同的屬性編輯器。</p>
<p> 下表列出屬性出現在</font><font face="Arial" size="3">Object Inspector</font><font
face="宋體" lang="ZH-CN" size="3">窗口中的方式</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">表</font><font face="Arial" size="3">19.3
</font><font face="宋體" lang="ZH-CN" size="3">屬性出現在</font><font face="Arial"
size="3">Object Inspector</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">屬性類型 處</font><font
size="3"> </font><font face="宋體" lang="ZH-CN" size="3">理</font><font size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">方</font><font size="3"> </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">簡單類型 </font><font
size="3"> </font><font face="Arial" size="3">Numeric</font><font face="宋體"
lang="ZH-CN" size="3">、</font><font face="Arial" size="3">Character</font><font
face="宋體" lang="ZH-CN" size="3">和</font><font size="3"> </font><font face="Arial"
size="3">String</font><font face="宋體" lang="ZH-CN" size="3">屬性出現在</font><font
face="Arial" size="3">Object Inspector</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"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">枚舉類型</font><font size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">枚舉類型的屬性顯示值的方式定義在代碼中。選擇時將出現下拉 </font><font
size="3"> </font><font face="Arial" size="3"></p>
<p></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 size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">集合類型出現在</font><font face="Arial"
size="3">Object Inspector</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">True</font><font face="宋體" lang="ZH-CN" size="3">或</font><font
face="Arial" size="3">False</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 size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">作為對象的屬性本身有屬性編輯器,如果對象有自己的</font><font
face="Arial" size="3">published</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">Object Inspector</font><font face="宋體" lang="ZH-CN" size="3">中通過展開對象屬性列,可以獨立編輯它們,</font><font
size="3"> </font><font face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">對象類型的屬性必須從</font><font
face="Arial" size="3">TPersistent</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 size="3"> </font><font
face="宋體" lang="ZH-CN" size="3">數組屬性必須有它們自己的屬性編輯器,</font><font
face="Arial" size="3">Object Inspector</font><font face="宋體" lang="ZH-CN" size="3">沒有內嵌對數</font><font
face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">組屬性編輯的支持。 </p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>3. </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">或</font><font
face="Arial" size="3">public</font><font face="宋體" lang="ZH-CN" size="3">,但不是</font><font
face="Arial" size="3">published</font><font face="宋體" lang="ZH-CN" size="3">。如想使用戶訪問</font><font
face="Arial" size="3">protected</font><font face="宋體" lang="ZH-CN" size="3">或</font><font
face="Arial" size="3">public</font><font face="宋體" lang="ZH-CN" size="3">屬性,可以將該屬性重定義為</font><font
face="Arial" size="3">published</font><font face="宋體" lang="ZH-CN" size="3">。如果你使用</font><font
face="Arial" size="3">TWinControl</font><font face="宋體" lang="ZH-CN" size="3">繼承,它繼承了</font><font
face="Arial" size="3">Ctl3D</font><font face="宋體" lang="ZH-CN" size="3">屬性,但是</font><font
face="Arial" size="3">protected</font><font face="宋體" lang="ZH-CN" size="3">的,因此用戶在設計和運行時不能訪問</font><font
face="Arial" size="3">Ctl3D</font><font face="宋體" lang="ZH-CN" size="3">,通過在新部件中將</font><font
face="Arial" size="3">Ctl3D</font><font face="宋體" lang="ZH-CN" size="3">重聲明為</font><font
face="Arial" size="3">published</font><font face="宋體" lang="ZH-CN" size="3">,就改變了</font><font
face="Arial" size="3">Ctl3D</font><font face="宋體" lang="ZH-CN" size="3">的訪問級別。下面的代碼演示如何將</font><font
face="Arial" size="3">Ctl3D</font><font face="宋體" lang="ZH-CN" size="3">聲明為</font><font
face="Arial" size="3">published</font><font face="宋體" lang="ZH-CN" size="3">,使之在設計時可被訪問。</p>
<p> </p>
<p> </font><font face="Arial" size="3">type</p>
<p>TSampleComponent=class(TWinControl)</p>
<p>published</p>
<p>property Ctl3D;</p>
<p>end; </p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -