?? 049.htm
字號:
face="Arial" size="3">KWGEN.EXE</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">KWGEN SPECIAL.HPJ</font><font face="宋體" lang="ZH-CN" size="3">。當(dāng)</font><font
face="Arial" size="3">KWGEN</font><font face="宋體" lang="ZH-CN" size="3">運行完畢后,就有了與</font><font
face="Arial" size="3">Help</font><font face="宋體" lang="ZH-CN" size="3">工程文件相同的關(guān)鍵詞文件,但以</font><font
face="Arial" size="3">.KWF</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">將關(guān)鍵詞文件放在編譯完的庫單元和</font><font
face="Arial" size="3">Help</font><font face="宋體" lang="ZH-CN" size="3">文件相同的目錄</font><font
face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">當(dāng)你在</font><font face="Arial"
size="3">Component Palette</font><font face="宋體" lang="ZH-CN" size="3">上安裝部件時,希望關(guān)鍵詞插入</font><font
face="Arial" size="3">Delphi Help</font><font face="宋體" lang="ZH-CN" size="3">系統(tǒng)的搜索索引。</p>
<p></font><font 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">Help</font><font
face="宋體" lang="ZH-CN" size="3">索引</font><font face="Arial" size="3"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">以自定義部件建立關(guān)鍵詞文件后,要將關(guān)鍵詞插入</font><font
face="Arial" size="3">Delphi</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> 將關(guān)鍵詞文件插入</font><font face="Arial" size="3">Detphi Help</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">將關(guān)鍵詞文件放在與編譯完的庫單元和</font><font
face="Arial" size="3">Heph</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">HELPINST</font><font
face="宋體" lang="ZH-CN" size="3">程序</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>HELPINST</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">Help</font><font face="宋體" lang="ZH-CN" size="3">索引文件</font><font
face="Arial" size="3">(.HDX)</font><font face="宋體" lang="ZH-CN" size="3">包含自定義部件幫助頁的關(guān)鍵詞。</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"></p>
<p>Delphi</font><font face="宋體" lang="ZH-CN" size="3">將窗體及其擁有的部件存儲在窗體文件</font><font
face="Arial" size="3">(.DFM)</font><font face="宋體" lang="ZH-CN" size="3">中,</font><font
face="Arial" size="3">DFM</font><font face="宋體" lang="ZH-CN" size="3">文件用二進(jìn)制表示窗體的屬性和它的部件。當(dāng)</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">用戶將自定義部件加入窗體中時,自定義部件應(yīng)當(dāng)具有存儲它們的屬性的能力。同樣,當(dāng)被調(diào)入</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">或應(yīng)用程序時,部件必須能從</font><font
face="Arial" size="3">DFM</font><font face="宋體" lang="ZH-CN" size="3">文件中恢復(fù)它們。</p>
<p> 在大多數(shù)時候,不需要做任何使部件讀寫</font><font face="Arial"
size="3">DFM</font><font face="宋體" lang="ZH-CN" size="3">文件的事。存儲和裝入都是繼承的祖先部件的行為的一部分。然而在某些情況下,你可能想改變部件存儲和裝入時初始化的方法。因此,應(yīng)當(dāng)理解下述的機制:</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"></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"></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"></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="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"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">當(dāng)應(yīng)用開發(fā)者設(shè)計窗體時,</font><font
face="Arial" size="3">Delphi</font><font face="宋體" lang="ZH-CN" size="3">將窗體的描述存儲在</font><font
face="Arial" size="3">DFM</font><font face="宋體" lang="ZH-CN" size="3">文件中。當(dāng)用戶運行程序時,它讀取這些描述。</p>
<p> 窗體的描述包含了一系列的窗體屬性和窗體中部件的相似描述。每一個部件,包括窗體本身,負(fù)責(zé)存儲和裝入自身的描述。</p>
<p> 在缺省情況下,當(dāng)存儲時,部件將所有</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">屬性的不同于缺省值的值以聲明的順序?qū)懭搿.?dāng)裝入時,部件首先構(gòu)造自己,并將所有屬性設(shè)為缺省值;然后,讀存儲的、非缺省的屬性值。</p>
<p> 這種缺省機制,滿足了大多數(shù)部件的需要,而又不需部件編寫者的任何工作。然而自己定義存儲和裝入過程以適合自定義部件需要的方法也有幾種。</p>
<p> ?、?lt;/font><font size="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">假設(shè)屬性沒有缺省值,這意味著部件總是存儲屬性。</p>
<p> 一個屬性的值沒被構(gòu)造函數(shù)設(shè)置,則被假設(shè)為零值。為了描述一個缺省值,在屬性聲明后面加</font><font
face="Arial" size="3">default</font><font face="宋體" lang="ZH-CN" size="3">指令和新的缺省值。</p>
<p> 你也能在重聲明屬性時描述缺省值。實際上,重聲明屬性的一個原因是指定不同的缺省值。只描述缺省值,那么在對象創(chuàng)建時并不會自動地給屬性賦值,還需要在部件的</font><font
face="Arial" size="3">Create</font><font face="宋體" lang="ZH-CN" size="3">方法中賦所需的值。</p>
<p> 下面的代碼用</font><font face="Arial" size="3">Align</font><font
face="宋體" lang="ZH-CN" size="3">屬性演示了描述缺省值的過程</font><font
face="Arial" size="3">.</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>type</p>
<p>TStatusBar=class(TPanel)</p>
<p>public</p>
<p>constructor Create(Aowner: TComponent); override; { </font><font face="宋體"
lang="ZH-CN" size="3">覆蓋以設(shè)置新值</font><font size="3"> </font><font
face="Arial" size="3">}</p>
<p>published</p>
<p>property Align default alBottom; { </font><font face="宋體" lang="ZH-CN" size="3">重新聲明缺省值</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>end;</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>constructor TStatusBar.Create(Aowner: TComponent);</p>
<p>begin</p>
<p>inherited Create(Aowner); { </font><font face="宋體" lang="ZH-CN" size="3">執(zhí)行繼承的初始化過程</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>Align := alBottom; { </font><font face="宋體" lang="ZH-CN" size="3">為</font><font
face="Arial" size="3">Align</font><font face="宋體" lang="ZH-CN" size="3">賦新的缺省值</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>end;</p>
<p></font><font 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"></p>
<p></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">published</font><font face="宋體" lang="ZH-CN" size="3">部分聲明的所有屬性都被存儲。然而,可以選擇不存儲所給的屬性,或者設(shè)計一個函數(shù)在運行時決定是否存儲屬性。</p>
<p> 控制</font><font face="Arial" size="3">Delphi</font><font face="宋體"
lang="ZH-CN" size="3">是否存儲屬性的方法是在屬性聲明后面加</font><font
face="Arial" size="3">stored</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">stored</font><font face="宋體" lang="ZH-CN" size="3">表達(dá)式。下面的代碼顯示了部件聲明三種新屬性。一個屬性是總是要存儲,一個是不存,第三個則決定于布爾方法的值:</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>type</p>
<p>TSampleCompiment = class(TComponent)</p>
<p>protected</p>
<p>function storeIt: Boolean;</p>
<p>public { </font><font face="宋體" lang="ZH-CN" size="3">正常情況下在不存</font><font
size="3"> </font><font face="Arial" size="3">} </p>
<p>property Important: Integer stored True; { </font><font face="宋體" lang="ZH-CN"
size="3">總是存儲</font><font size="3"> </font><font face="Arial" size="3">}</p>
<p>published { </font><font face="宋體" lang="ZH-CN" size="3">正常情況下保存</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>property UnImportant: Integer stored False; { </font><font face="宋體" lang="ZH-CN"
size="3">不存</font><font size="3"> </font><font face="Arial" size="3">}</p>
<p>property Sometimes: Integer stored StoreIt; { </font><font face="宋體" lang="ZH-CN"
size="3">存儲依賴于函數(shù)值</font><font size="3"> </font><font face="Arial" size="3">}</p>
<p>end;</p>
<p></font><font 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"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">在部件從存儲的描述中讀取所有的屬性后,它調(diào)用名為</font><font
face="Arial" size="3">Loaded</font><font face="宋體" lang="ZH-CN" size="3">的虛方法,這提供了按需要執(zhí)行任何初始化的機會。調(diào)用</font><font
face="Arial" size="3">Loaded</font><font face="宋體" lang="ZH-CN" size="3">是在窗體和它的控制顯示之前,因此,不需要擔(dān)心初始化會帶來屏幕閃爍。</p>
<p> 在部件載入屬性時初始化它,要覆蓋</font><font face="Arial"
size="3">Loaded</font><font face="宋體" lang="ZH-CN" size="3">方法。</p>
<p> 在</font><font face="Arial" size="3">Loaded</font><font face="宋體"
lang="ZH-CN" size="3">方法中,要做的第一件事是調(diào)用繼承的</font><font
face="Arial" size="3">Loaded</font><font face="宋體" lang="ZH-CN" size="3">方法。這使得在你的部件執(zhí)行初始化之前,任何繼承的屬性都已初始化。</p>
<p> 下面的代碼來自于</font><font face="Arial" size="3">TDatabase</font><font
face="宋體" lang="ZH-CN" size="3">部件。在裝入后,</font><font face="Arial"
size="3">TDatabase</font><font face="宋體" lang="ZH-CN" size="3">試圖重建在它存儲時已打開的連接,并描述在連接發(fā)生異常時如何處理。</p>
<p> </p>
<p> </font><font face="Arial" size="3">procedure TDatabase.Loaded</p>
<p>begin</p>
<p>inherited Loaded; { </font><font face="宋體" lang="ZH-CN" size="3">總是先調(diào)用繼承的方法</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>Modified; { </font><font face="宋體" lang="ZH-CN" size="3">設(shè)置內(nèi)部標(biāo)志</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>try</p>
<p>if FStreamedConnected then Open; { </font><font face="宋體" lang="ZH-CN" size="3">重建聯(lián)接</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>except</p>
<p>if csDesigning in ComponentState then { </font><font face="宋體" lang="ZH-CN"
size="3">在設(shè)計時</font><font size="3"> </font><font face="Arial" size="3">}</p>
<p>Application.HandleException(self) { </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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -