我一直在使用Delphi 7中的一個項目,在那裏我想讓窗體繼承其他窗體的組件。我能夠得到這個工作,但遇到以下問題(我將發佈解決方案,希望在未來幫助其他人):如何在Delphi中使用或解決可視化表單繼承問題?
- 在表單的.pas文件中,我會將窗體更改爲從其他窗體繼承,但不會從祖先窗體獲取組件。
- 對於某些後代形式,在設計時打開窗體時會出現以下錯誤消息:「創建窗體時出錯:未找到'TAncestorForm'的祖先。」我必須先手動打開祖先表單,然後才能打開後代表單。
我一直在使用Delphi 7中的一個項目,在那裏我想讓窗體繼承其他窗體的組件。我能夠得到這個工作,但遇到以下問題(我將發佈解決方案,希望在未來幫助其他人):如何在Delphi中使用或解決可視化表單繼承問題?
首先,對於那些不知道如何以可視方式繼承表單的人,可以照常創建祖先表單。然後轉到文件>新建>其他。選擇具有當前項目名稱的選項卡,然後選擇要從其繼承的表單。如果您想從不屬於當前項目的表單繼承,請打開該表單,右鍵單擊該表單並選擇添加到存儲庫。然後,您可以轉到文件>新建>其他,然後從相應的選項卡中選擇該表單。
鑑於這一點,我遇到了問題,因爲一些後代形式已經創建,所以我不能按照上面的過程。此外,我對Delphi創建的標準代碼進行了一些更改。我可以使用下面的準則,以解決與視覺形式繼承的所有問題:
type TMyForm = class(TAncestorForm)
inherited
代替object
,如:inherited MyForm: TMyForm
var AncestorForm: TAncestorForm;
uses
部分必須有相同的全局變量作爲後評論單位的文件名,如:unAncestor in 'unAncestor.pas' {AncestorForm}
手冊/ Tips:
DPR似乎有點棘手。就我而言,我創建了一個從TFrame派生的祖先。然後我從TAncestorFrame派生出多個幀。我DPR的uses子句則看起來像:
uses
Forms,
ancestorFrame in 'ancestorFrame.pas' {AncestorFrame : TFrame},
frame1Unit in 'frame1Unit.pas' {frame1:TFrame},
frame2Unit in 'frame2Unit .pas' {frame2:TFrame},
的DPROJ文件應該是這樣:
<DCCReference include="frame1Unit.pas">
<Form>frame1</Form>
<DesignClass>TFrame</DesignClass>
</DCCReference>
派生的框架應該是這樣的:
TFrame1 = class(TAncestorFrame)
和派生框架.DFM文件應該說:
inherited Frame1:TFrame1
全局變量是n不需要。 – 2008-10-10 15:07:14