2

Hi I am having delphi application which uses more than 100 forms. There is one form call Form B which derived from the Form A.

Unit B 

interace

uses A;

Type
Form B = Class(Form A)

End;

Now, when i try to open Form B on the IDE i m getting the error, "Error cerating form: Ancestor for TFormA not found". But when i open Form A and then try to form B then i am able to open form without any error. I am not able to find why its happening. Am i missed something?

4

3 に答える 3

2

フォームの継承を使用する際に留意すべき2つの項目。dfmファイルには、「オブジェクトTFormB」ではなく「継承されたTFormB」という宣言が必要です。もう1つの項目は、DelphiがTFormBを作成する前に、TFormAがどこにあるかを知る必要があることです。これを行ってからしばらく経ちましたが、正しく覚えていれば、ベースフォームがリポジトリに追加された方がうまく機能します

手動で行ったことを指摘したので、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
于 2012-08-10T16:02:54.703 に答える
1

DelphiIDEが提供するビジュアルフォームの継承を使用する必要があります。私はDelphi5を持っていません。DelphiXEでは、[ファイル]->[新規]->[その他...]->[継承可能なアイテム]からアクセスします。Delphi 5でも利用できると思いますが、おそらく別のメニュー項目からです

于 2012-08-10T15:57:39.620 に答える
0

DFMファイルですべてが「継承」されているにもかかわらず、同じ問題が発生しました。

私の問題を解決したのは、プロジェクトマネージャーで右クリック->追加して祖先ファイルを選択することにより、プロジェクトに祖先ファイルを追加することでした。

于 2014-09-16T12:42:37.790 に答える