Vcl.Forms.TCustomForm.CreateNew

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

constructor CreateNew(AOwner: TComponent; Dummy: Integer  = 0); virtual;

プロパティ

種類 可視性 ソース ユニット
constructor public Vcl.Forms.pas Vcl.Forms TCustomForm


説明

新しいフォームを作成および初期化します。

CreateNew を Create の代わりに使用すると、初期化に関連 .DFM ファイルを使用することなく作成できます。TCustomForm の子孫が TForm オブジェクトや TForm の子孫でない場合、CreateNew を常に使用します。

CreateNew は、すでに関連づけられている .DFM ファイルのストリーミング読み込みを省略します。フォームにビジュアル コンポーネントがある場合には、外部 .DFM をストリーミングし、ビジュアル コンポーネントをそれらのクラスにバインドする必要があります。 新しく作成されたフォームに外部 .DFM ファイルがある場合、CreateNew への呼び出しに引き続き、InitInheritedComponent を呼び出すことができます。 新しいフォーム インスタンスに対して、.dfm ファイルを作成する必要がある場合、CreateNew への呼び出しを、WriteComponentResFile と ReadComponentResFile への呼び出しで挟みます。 以下がコードの流れです:

  1. 外部 .DFM ファイルへストリーム出力。
  2. いずれの .DFM リソース ファイルとも関連づけられていない、新しいフォームを作成。
  3. 外部 .DFM ファイルからストリーム入力し、それをこの新しいフォームにバインド。
WriteComponentResFile('Temp.dfm', Form1);
...

Form2 := TForm.CreateNew(Application);

ReadComponentResFile('Temp.dfm', Form2);
警告: 大抵のフォームは、そのコントロール群が .DFM ファイルから作成されることを想定して記述されているため、Create の代わりに CreateNew を使用すると、予期しない結果を招くことがあります。

CreateNew メソッドは、CreateInitializeNewForm を呼び出します。これは、フォーム作成時に OnCreate イベントを呼び出しません。

最初の引数 AOwner は、フォームのオーナーです(通常、アプリケーションまたは他のフォームのオーナーになります。2 番目の引数 Dummy は、デフォルトが 0 で、このコンストラクタでは使用されません。このコンストラクタが第 1 引数、AOwner のみを渡してきた場合、システムはデフォルトで 0 を渡します。

関連項目