您好我正在使用超過100個表單的delphi應用程序。還有從形式A在delphi中創建表單時出錯
Unit B
interace
uses A;
Type
Form B = Class(Form A)
End;
衍生現在,當我嘗試在IDE中打開表格B I M得到的錯誤,一種形式的調用方式B「錯誤cerating形式:祖先爲TFormA未找到」。但是,當我打開表格A,然後嘗試形成B,然後我能夠打開表單沒有任何錯誤。 我無法找到它發生的原因。我錯過了什麼嗎?
您好我正在使用超過100個表單的delphi應用程序。還有從形式A在delphi中創建表單時出錯
Unit B
interace
uses A;
Type
Form B = Class(Form A)
End;
衍生現在,當我嘗試在IDE中打開表格B I M得到的錯誤,一種形式的調用方式B「錯誤cerating形式:祖先爲TFormA未找到」。但是,當我打開表格A,然後嘗試形成B,然後我能夠打開表單沒有任何錯誤。 我無法找到它發生的原因。我錯過了什麼嗎?
使用表單繼承時需要注意兩點。 dfm文件需要聲明「inherited TFormB」而不是「object TFormB」另一項是Delphi需要知道TFormA在創建TFormB之前所在的位置。已經有一段時間了,如果我沒有記錯,如果基本表單已被添加到存儲庫,效果會更好
由於您指出您手動確保dfm中的聲明使用如上所述,「繼承」而不是「對象」。要自己做以下改變
1)打開這兩種形式。 2)然後查看TFormB文本 3)將其更改爲繼承像下面
inherited FormB: TFormB
Caption = 'FormB'
PixelsPerInch = 96
TextHeight = 13
end
// not
object FormB: TFormB
Caption = 'FormB'
PixelsPerInch = 96
TextHeight = 13
end
完成了更改並保存並試圖打開表單,但仍然是同樣的問題。 :( – Nalu 2012-08-10 16:05:49
...以及我知道你需要上面的聲明爲您的窗體繼承正常工作......並且我知道IDE需要知道祖先,並在它可以加載您的後代之前加載它... I你可能只需要重新命名你的表單,嘗試使用IDE創建一個新的繼承表單,並複製你的組件和代碼.IDE窗體繼承機制應該完成你可能會丟失,我會備份我的工作,然後嘗試下一步,看看它是否解決了問題。 – GDF 2012-08-10 16:27:44
@Naren - 你的項目文件是否包含'unit.pas'中的單元'{FormA}'? – 2012-08-10 16:34:07
您應該使用Delphi IDE提供的可視化表單繼承;我沒有Delphi 5,在Delphi XE中,它通過File-> New-> Other ...-> Inheritable Items來訪問。我相信它也可以在Delphi 5中使用,但可能來自不同的菜單項
在Delphi 7中,例如['它在一個標籤上](http://i.imgur.com/xaLn0.png)表格命名爲當前項目。 – TLama 2012-08-11 18:49:50
描述我儘管在DFM文件中所有物質「繼承」有同樣的問題。
什麼解決了我的問題是通過右鍵單擊項目管理器 - 添加並選擇祖先文件,將祖先文件添加到項目中。
您是否使用IDE從FormA繼承FormB,或者只是手動完成它? – kludg 2012-08-10 15:50:43
所以你正在使用窗體繼承。要記住兩件事。 dfm文件需要聲明「inherited TFormB」而不是「object TFormB」另一項是Delphi需要知道TFormA在創建TFormB之前所在的位置。我已經完成了這一段時間,如果我沒有記錯的話,當基本表單被添加到版本庫時,它會更好。 – GDF 2012-08-10 15:52:42
@serg:沒有手動。 – Nalu 2012-08-10 15:54:14