19.2.2.4 注冊部件
編寫部件及其屬性、方法和事件只是部件創(chuàng)建過程的一部分。盡管部件具有這些特征就可用,但部件真正功能強(qiáng)大的是在設(shè)計時操作它們的能力。
使部件在設(shè)計時可用需要經(jīng)過如下幾步:
● 用Delphi注冊部件
● 增加選擇板位圖
● 提供有關(guān)屬性和事件的幫助
● 存貯和讀取屬性
1. 用Delphi注冊部件
為了讓Delphi識別自定義部件,并將它們放置于Component Palette上,你必須注冊每一個部件。
注冊一個部件要在部件所在單元里加入Register方法,這包括兩個方面的內(nèi)容:
● 聲明注冊過程
● 實現(xiàn)注冊過程
一旦安裝了注冊過程,就可以將部件安裝在選擇板上。
注冊過程要在部件所在單元中寫一個過程,該過程必須以Register命名。Register必須出現(xiàn)在庫單元的interface部分,這樣Delphi就能定位它。在Register過程中,可以為每個部件調(diào)用過程RegisterComponents。
下面的代碼演示了建立和注冊部件的概略方法:
unit MyBtns;
interface
type
… { 聲明自定義部件 }
procedure Register;
Implementation
procedure Register;
begin
… { 注冊部件 }
end;
end.
在Register過程中,必須注冊每一個要加入Component Palette的部件,如果庫單元包含若干部件,就要將它們一次性注冊。
注冊一個部件時,為部件調(diào)用RegisterComponents過程。RegisterComponents告訴Delphi兩件有關(guān)所注冊的部件的事::
● 要注冊部件所在的Component Palette的頁名
● 要安裝的部件的名字
選擇板的頁名是個字符串。如果你所給名字的頁不存在,Delphi就用該名字創(chuàng)建新的頁。
下面的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會自動套用缺省位圖。
因為選擇板位圖只有在設(shè)計時需要,所以沒有必要將它們編譯進(jìn)庫單元。而是將它們提供在與庫單名相同的Windows資源文件中,擴(kuò)展名為.DCR。用Delphi的位圖編輯器來生成資源文件,每個位圖邊長24個象素。
為每個要安裝的庫單元提供一個選擇板位圖文件,在每個文件中為每個要注冊的部件提供一個位圖。位圖圖象名與部件名相同,將文件放在與庫單元相同的目錄中,這樣在安裝部件時Dephi就能發(fā)現(xiàn)位圖。
例如,如果你在ToolBox單元中創(chuàng)建一個名為TMyControl的部件,就需要建立名為TOOLBOX.DCR的資源文件,文件中包含名為TMyControl的位圖。
相關(guān)推薦:2010年9月計算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |