19.2.2.4 注冊部件
編寫部件及其屬性、方法和事件只是部件創建過程的一部分。盡管部件具有這些特征就可用,但部件真正功能強大的是在設計時操作它們的能力。
使部件在設計時可用需要經過如下幾步:
● 用Delphi注冊部件
● 增加選擇板位圖
● 提供有關屬性和事件的幫助
● 存貯和讀取屬性
1. 用Delphi注冊部件
為了讓Delphi識別自定義部件,並將它們放置於Component Palette上,你必須注冊每一個部件。
注冊一個部件要在部件所在單元裡加入Register方法,這包括兩個方面的內容:
● 聲明注冊過程
● 實現注冊過程
一旦安裝了注冊過程,就可以將部件安裝在選擇板上。
注冊過程要在部件所在單元中寫一個過程,該過程必須以Register命名。Register必須出現在庫單元的interface部分,這樣Delphi就能定位它。在Register過程中,可以為每個部件調用過程RegisterComponents。
下面的代碼演示了建立和注冊部件的概略方法:
unit MyBtns;
interface
type
… { 聲明自定義部件 }
procedure Register;
Implementation
procedure Register;
begin
… { 注冊部件 }
end;
end.
在Register過程中,必須注冊每一個要加入Component Palette的部件,如果庫單元包含若干部件,就要將它們一次性注冊。
注冊一個部件時,為部件調用RegisterComponents過程。RegisterComponents告訴Delphi兩件有關所注冊的部件的事::
● 要注冊部件所在的Component Palette的頁名
● 要安裝的部件的名字
選擇板的頁名是個字符串。如果你所給名字的頁不存在,Delphi就用該名字創建新的頁。
下面的Register過程注冊了一個名為TMyComponent的部件,並將其放在名為“Miscellaneous”的Component Palette頁上。
procedure Register;
begin
RegisterComponents('Miscellaneous', [TFirst, TSecond]);
end;
也可以在相同的頁上,或者在不同的頁上,一次注冊多個部件:
procedure Register;
begin
RegisterComponents('Miscellaneous', [TFirst, TSecond]);
RegisterComponents('Assorted', [TThird]);
end;
2. 增加Component Palette上的位圖
每個部件都需要一個位圖來在Component Palette上代表它。如果安裝時沒有描述自己的位圖,則Delphi會自動套用缺省位圖。
因為選擇板位圖只有在設計時需要,所以沒有必要將它們編譯進庫單元。而是將它們提供在與庫單名相同的Windows資源文件中,擴展名為.DCR。用Delphi的位圖編輯器來生成資源文件,每個位圖邊長24個象素。
為每個要安裝的庫單元提供一個選擇板位圖文件,在每個文件中為每個要注冊的部件提供一個位圖。位圖圖象名與部件名相同,將文件放在與庫單元相同的目錄中,這樣在安裝部件時Dephi就能發現位圖。
例如,如果你在ToolBox單元中創建一個名為TMyControl的部件,就需要建立名為TOOLBOX.DCR的資源文件,文件中包含名為TMyControl的位圖。
3. 提供有關屬性和事件的幫助
當在窗體中選擇一個部件或在Object Inspector中選擇事件或屬性時,能夠按F1得到有關這一項的幫助。如果創建了相應的Help文件的話,自定義部件的用戶能得到有關你的部件的相應的文檔。
因為Delph使用了特殊的Help引擎支持跨多個Help文件處理主題搜索,所以你能提供關於自定義部件的小的Help文件,用戶不需要額外的步驟就能找到你的文檔。你的Help成了Delphi Help系統的一部分。
要給用戶提供幫助,要理解下列兩方面:
● Delphi怎樣處理HELP請求
● 將HELP插入Delphi
⑴ Delphi怎樣處理HELP請求
Delphi基於關鍵詞查詢HELP請求。就是說,當用戶在窗體設計窗口的已選部件上按F1鍵時,Delpdi將部件的名字轉換成一個關鍵詞,然後調用Windows Help引擎查找那個關鍵詞的幫助主題。關鍵詞是Windows Help系統的標准部分。實際上 ,WinHelp使用Help中的關鍵詞產生Search對話框中的列表。因為用於上下文敏感搜索中的關鍵詞不是實際供用戶讀的,所以要輸入關鍵詞的替代詞。
例如,一個查找名為TSomething的部件的詳細信息的用戶可能打開WinHelp的Search對話框並輸入TSomething。但不會使用用於窗體設計窗口的上下文查找的替代形式class-TSomething。因此,這個特殊的關鍵詞Class-TSomething對用戶是不可見的,以免弄亂了搜索列表。
⑵ 將Help插入Delphi
Delphi提供了創建和插入Windows Help文件的工具,包括Windows Help編譯器HC.EXE。為自定義部件建立Help文件的機制與建立任何Help文件沒什麼不同,但需要遵循一些約定以與庫中其它Help兼容。
保持兼容性的方法如下:
● 建立Help文件
● 增加特殊的注腳
● 建立關鍵詞文件
● 插入Help索引
當你為自定義部件建立完Help,有下列幾個文件:
● 編譯過的Help(.HLP)文件
● Help關鍵詞(.KWF)文件
● 一個或多個Help源文件(.RTF)
● Help工程文件(.HLJ)