FMX.Controls.Presentation.TPresentedControl
Delphi
TPresentedControl = class(TStyledControl, IMessageSendingCompatible, IControlTypeSupportable, ISceneChildrenObserver)
C++
class PASCALIMPLEMENTATION TPresentedControl : public Fmx::Controls::TStyledControl
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
class | public | FMX.Controls.Presentation.pas FMX.Controls.Presentation.hpp |
FMX.Controls.Presentation | FMX.Controls.Presentation |
説明
表現用コントロールの基底クラスで、複数の UI プレゼンテーションを提供することができます。表現用コントロールは、ユーザー データ(データ モデル)と UI プレゼンテーション(プレゼンテーション レイヤ)を処理するために、別のオブジェクトを使用します。
表現用コントロールの次のプロパティにより、ユーザー モデルと UI プレゼンテーションのこの分離使用が可能になります:
- Model は、表現用コントロールによって使用されるデータを含む、データ モデルを表します。
- PresentationProxy により、表現用コントロールとデータ モデルは、Receiver、つまり実際のプレゼンテーション レイヤと、情報を交換することができます。.
- Receiver はプレゼンテーション レイヤで、コントロール UI の実際のビジュアル プレゼンテーションを提供します。
プレゼンテーション コントロールは、これらのプロパティのインスタンスを実行時に自動的に作成します。 プレゼンテーション コントロールのインスタンスを作成するとすぐに空のモデルが作成され、プレゼンテーション コントロールが読み込みを行うとプレゼンテーション プロキシが作成されます。
DefineModelClass を再実装して、表示されたコントロールがそのデータ モデルのために使用するクラスを決定します。DefinePresentationName を再実装して、表示されたコントロールが使用する、デフォルトのプレゼンテーション プロキシの名前を決定します。 表示されるコントロールの特定のインスタンスのプレゼンテーション プロキシに対するカスタム名を定義するには、OnPresentationNameChoosing イベントを代わりに処理します。
ControlType プロパティは、プレゼンテーション層がコントロールを表示するときに、アプリケーションが動作しているプラットフォームのネイティブ コントロールを使用するか(Platform
)、またはデフォルトの FireMonkey スタイル システムを使用するか(Styled
)を示します。FireMonkey がネイティブ表示をサポートしていないプラットフォームでは、ControlType プロパティの値にかかわらず、デフォルトのスタイル付き表示が使われます。
プレゼンテーションでの作業
表示用コントロールは、プレゼンテーションを操作するために次のメソッドとプロパティを使用します:
- Presentation プロパティは、使用されるプレゼンテーションへのアクセスを提供します。Presentation は、PresentationProxy の Receiver プロパティから、プレゼンテーションを取得します。
- PresentationProxy プロパティは、読み込まれるプレゼンテーション プロキシへのアクセスを提供します。 LoadPresentation メソッドは、OnPresentationNameChoosing イベント ハンドラまたは DefinePresentationName によって返された、プレゼンテーション プロキシ名を持つ、プレゼンテーション プロキシを作成およびロードします。LoadPresentation は InitPresentation を呼出し、さらに、新しいプレゼンテーションがロードされる子コントロール群に通知するための AncestorPresentationLoaded を呼び出します。InitPresentation は、ロードされたプレゼンテーション プロキシを使用して、初期メッセージ(
PM_INIT
、PM_SET_VISIBLE
、PM_GET_SIZE
)をプレゼンテーションに送信します。LoadPresentation は、Loaded コントロールから、フォーム ファイルがメモリに読み込まれた後に、自動的に呼び出されます。LoadPresentation は現在の Presentation Proxy Factory を使用して、Presentations コレクションに登録済みの適切なプレゼンテーション プロキシ名を取得します。 - HasPresentationProxy メソッドは、プレゼンテーション プロキシがロードされているかどうかを取得します。
- ControlType プロパティは、どのタイプのプレゼンテーションがロードされるべきかを定義します。
Styled
は、標準の FireMonkey スタイル付きコントロールを表します。 このようなコントロールは、指定されたプラットフォームのすべてのバージョンにおいて、同じに見えます。 これが、デフォルト値です。Platform
は、ターゲット プラットフォームのネイティブ コントロールを表します。 ControlType 値は、プレゼンテーション プロキシ クラス名を DefinePresentationName に生成するために使用されます。
モデルでの作業
表示用コントロールは、モデルを操作するために次のメソッドとプロパティを使用します:
- Model プロパティは、表示用コントロールで使用されるデータ モデルへのアクセスを提供します。この Model データ モデルは、表示用コントロールのコンストラクタで作成されます。
- DefineModelClass メソッドは、現在の表示用コントロールのコンストラクタが、表示用コントロールのためのデータ モデルを作成する際に使用する、データ モデル クラスのクラス参照を返します。デフォルトでは、DefineModelClass は TDataModel を返します。下位クラスは、DefineModelClass を再実装して、下位の表示用コントロールが自分のデータ モデルのために使用するデータ モデル クラスを、決定できるようにします。
- GetModel メソッドは、下位の表示用コントロール クラスで、データ モデルを、この表示用コントロールで使用されるデータ モデル クラスにキャストするために使用されます。