?? 050.htm
字號:
<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
face="Arial" size="3">SetShape</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"></p>
<p></font><font face="宋體" lang="ZH-CN" size="3">下面是</font><font face="Arial"
size="3">SetShape</font><font face="宋體" lang="ZH-CN" size="3">的實現:</p>
<p> </font><font face="Arial" size="3"></p>
<p>procedure TSampleShape.SetShape(value: TSampleShapeType);</p>
<p>begin</p>
<p>if FShape<>value then</p>
<p>begin</p>
<p>FShape := value;</p>
<p>Invalidate(True); { </font><font face="宋體" lang="ZH-CN" size="3">強制新形狀的重畫</font><font
size="3"> </font><font face="Arial" size="3">}</p>
<p>end;</p>
<p>end;</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>2. </font><font face="宋體" lang="ZH-CN" size="3">覆蓋</font><font face="Arial"
size="3">constructor</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">destructor</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">為了改變缺省屬性值和初始化部件擁有的對象,需要覆蓋繼承的</font><font
face="Arial" size="3">constructor</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">destructor</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">Width</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">Height</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">Shape</font><font face="宋體" lang="ZH-CN" size="3">控制的大小的初始設置為邊長</font><font
face="Arial" size="3">65</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">constructor</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>type</p>
<p>TSampleShape=class(TGraphicControl)</p>
<p>public</p>
<p>constructor Create(Aowner: TComponent); override;</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 face="Arial" size="3">
</font><font face="宋體" lang="ZH-CN" size="3">用新的缺省值重新聲明屬性</font><font
face="Arial" size="3">Height</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">width</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>type</p>
<p>TSampleShape=class(TGrahicControl)</p>
<p>published</p>
<p>property Height default 65;</p>
<p>property Width default 65;</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 face="Arial" size="3">
</font><font face="宋體" lang="ZH-CN" size="3">在庫單元的實現部分編寫新的</font><font
face="Arial" size="3">constructor</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>constructor TSampleShape.Create(Aowner: TComponent);</p>
<p>begin</p>
<p>inherited Create(AOwner);</p>
<p>width := 65;</p>
<p>Height := 65;</p>
<p>end;</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>3. </font><font face="宋體" lang="ZH-CN" size="3">公布</font><font face="Arial"
size="3">Pen</font><font face="宋體" lang="ZH-CN" size="3">和</font><font face="Arial"
size="3">Brush</p>
<p></font><font face="宋體" lang="ZH-CN" size="3">在缺省情況下,一個</font><font
face="Arial" size="3">Canvas</font><font face="宋體" lang="ZH-CN" size="3">具有一個細的、黑筆和實心的白刷,為了使用戶在使用</font><font
face="Arial" size="3">Shape</font><font face="宋體" lang="ZH-CN" size="3">控制時能改變</font><font
face="Arial" size="3">Canvas</font><font face="宋體" lang="ZH-CN" size="3">的這些性質,必須能在設計時提供這些對象;然后在畫時使用這些對象,這樣附屬的</font><font
face="Arial" size="3">Pen</font><font face="宋體" lang="ZH-CN" size="3">或</font><font
face="Arial" size="3">Brush</font><font face="宋體" lang="ZH-CN" size="3">被稱為</font><font
face="Arial" size="3">Owned</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">Owned</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"></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"></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">Owned</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 face="Arial" size="3">
</font><font face="宋體" lang="ZH-CN" size="3">聲明</font><font face="Arial" size="3">Owned</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">Owned</font><font face="宋體" lang="ZH-CN" size="3">對象。通常,部件在</font><font
face="Arial" size="3">constructor</font><font face="宋體" lang="ZH-CN" size="3">中創建它,在</font><font
face="Arial" size="3">destructor</font><font face="宋體" lang="ZH-CN" size="3">中撤消它。</font><font
face="Arial" size="3"></p>
<p>Owned</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">Pen</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">Brush</font><font face="宋體" lang="ZH-CN" size="3">的對象域:</p>
<p> </font><font face="Arial" size="3"></p>
<p>type</p>
<p>TSampleShape=class(TGraphicControl)</p>
<p>private</p>
<p>FPen: TPen;</p>
<p>FBrush: TBrush;</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 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">Owned</font><font face="宋體" lang="ZH-CN" size="3">對象相同類型的屬性來提供對</font><font
face="Arial" size="3">Owned</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">Shape</font><font face="宋體" lang="ZH-CN" size="3">控制提供了訪問</font><font
face="Arial" size="3">Pen</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">Brush</font><font face="宋體" lang="ZH-CN" size="3">的方法</p>
<p> </font><font face="Arial" size="3"></p>
<p>type</p>
<p>TSampleShape=class(TGraphicControl)</p>
<p>private</p>
<p>procedure SetBrush(Value: TBrush);</p>
<p>procedure SetPen(Value: TPen);</p>
<p>published</p>
<p>property Brush: TBrush read FBrush write SetBrush;</p>
<p>property Pen: TPen read FPen write SetPen;</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
face="Arial" size="3">implementation</font><font face="宋體" lang="ZH-CN" size="3">部分寫</font><font
face="Arial" size="3">SetBrush</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">SetPen</font><font face="宋體" lang="ZH-CN" size="3">方法:</p>
<p> </font><font face="Arial" size="3"></p>
<p>procedure TSampleShape.SetBrush(Value: TBrush);</p>
<p>begin</p>
<p>FBrush.Assign(Value);</p>
<p>end;</p>
<p></font><font size="3"> </font><font face="Arial" size="3"></p>
<p>procedure TSampleShape.SetPen(Value: TPen);</p>
<p>begin</p>
<p>FPen.Assign(Value);</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 face="Arial" size="3">
</font><font face="宋體" lang="ZH-CN" size="3">初始化</font><font face="Arial"
size="3">Owned</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">constructor</font><font face="宋體" lang="ZH-CN" size="3">中建立,這樣用戶才能在運行時與對象交互。相應地,部件的</font><font
face="Arial" size="3">destructor</font><font face="宋體" lang="ZH-CN" size="3">必須在撤消自身之前撤消</font><font
face="Arial" size="3">Owned</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">Shape</font><font face="宋體" lang="ZH-CN" size="3">控制中加入了</font><font
face="Arial" size="3">Pen</font><font face="宋體" lang="ZH-CN" size="3">和</font><font
face="Arial" size="3">Brush</font><font face="宋體" lang="ZH-CN" size="3">對象,因此,要在</font><font
face="Arial" size="3">constructor</font><font face="宋體" lang="ZH-CN" size="3">中初始化它們,在</font><font
face="Arial" size="3">destructor</font><font face="宋體" lang="ZH-CN" size="3">中撤消它們。</font><font
face="Arial" size="3"></p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -