System.Classes.TDataModule.CreateNew
Delphi
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); virtual;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
constructor | public | System.Classes.pas | System.Classes | TDataModule |
説明
データモジュールのインスタンスを作成し,Screen グローバル変数に登録します。
Create のかわりに CreateNew を使用すると,関連付けられている .form ファイルを初期化のために使用せずにデータモジュールを作成できます。
警告: Create のかわりに CreateNew を使用すると,予期できない結果を招く場合があります。ほとんどのデータモジュールは,そのコントロールがフォームファイルから作成されることを前提として記述されているからです。
CreateNew は,継承されたコンストラクタを呼び出し,次に,Screen グローバル変数にデータモジュールの存在を通知します。
最初の引数の AOwner はデータモジュールのオーナー(通常アプリケーション)です。2 番めの引数の Dummy はデフォルトで 0 であり,このコンストラクタによって使用されません。このコンストラクタに最初の引数 AOwner しか渡されなかった場合,システムはデフォルトで 0 を渡します。
CreateNew は,以前に関連付けられたフォームファイルのストリーム入力をバイパスします。したがって,ビジュアルコンポーネントをそのクラスと結合するには外部フォームファイルをストリーム入力しなければなりません。以前に関連付けられたフォームファイルにストリーム入力するには,InitInheritedComponent を呼び出します。別のフォームファイルにストリーム入力するには,CreateNew の呼び出しを,WriteComponentResFile と ReadComponentResFile の呼び出しとともに一括して行う必要があります。次のコードシーケンスは,以下の 3 つの処理を実行します。
1. 外部フォームファイルをストリームから出します。
2. フォームファイルと関連付けを解除された新規データモジュールを作成します。
3. 外部フォームファイルをストリーム入力し,そのファイルをこの新規データモジュールと結合します。
WriteComponentResFile('Temp.xfm', DataModule1); ...
DataModule2 := TDataModule.CreateNew(Application);
ReadComponentResFile('Temp.xfm', DataModule2);