System.Classes.InitInheritedComponent
Delphi
function InitInheritedComponent(Instance: TComponent; RootAncestor: TClass): Boolean;
C++
extern DELPHI_PACKAGE bool __fastcall InitInheritedComponent(TComponent* Instance, System::TClass RootAncestor);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | System.Classes.pas System.Classes.hpp |
System.Classes | System.Classes |
説明
InitInheritedComponent 関数は,継承されたルートクラスのフォームファイルのストリームへの書き込みを初期化します。
ルートクラスのコンストラクタから InitInheritedComponent 関数を呼び出すと,関連付けられているフォームファイル内の情報のストリームへの書き込みを開始できます。
Instance は,インスタンス化されるオブジェクトです。
RootAncestor は,Instance が下位オブジェクトを表す基本ルートクラスです。このクラスは,ストリームプロセスの起点(フォームファイルと関連付けられているコンポーネント)である,TCustomForm,TFrame,TDataModule などのルートクラスでなければなりません。
InitInheritedComponent は,フォームファイルが正常にストリームに書き込まれた場合に true を返し,それ以外の場合は false を返します。
InitInheritedComponent の呼び出しは,ルートクラスの下位クラスでのみ必要となります。また,その呼び出しは,フォームファイルの持続的なプロパティがストリームに書き込まれる場合を除いてオブジェクトインスタンスの作成後に行わなければなりません。次の Delphi と C++ のコードのサンプルは,ルートクラスの典型的なコンストラクタです。
constructor TMyRootClass.Create(AOwner: TComponent);
begin inherited Create(AOwner); { まず,オブジェクトのインスタンスを構築する } if (ClassType <> TMyRootClass) and not (csDesigning in ComponentState) then begin if not InitInheritedComponent(Self, TMyRootClass) then raise EResNotFound.CreateFmt(SResNotFound, [ClassName]); end; end;
void TMyRootClass.TMyRootClass(TComponent AOwner);
{ if ( (ClassType != TMyRootClass) && !(ComponentState.Contains(csDesigning)) { if !(InitInheritedComponent(this, TMyRootClass)) throw EResNotFound(SResNotFound, TVarRec theClassName[] = {ClassName}, 1); } }