FMX.Controls.Model.TDataModel
Delphi
TDataModel = class(TMessageSender)
C++
class PASCALIMPLEMENTATION TDataModel : public Fmx::Presentation::Messages::TMessageSender
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
class | public | FMX.Controls.Model.pas FMX.Controls.Model.hpp |
FMX.Controls.Model | FMX.Controls.Model |
説明
TDataModel は、表示用コントロールのデータ モデルの基底クラスです。 下位クラスは、対応する表示用コントロールのプロパティが使用するデータ値を格納される、プロパティを定義します。
TDataModel は TMessageSender を拡張しており、これはメッセージ送信機能を提供します。Data モデルは、Receiver(またはプレゼンテーション)の定義、および、Data モデルのデータが変更された際に、この Receiver へのメッセージ送信して、関連する表示用コントロール内に表示される値を更新することができます。Data モデルが Data 値を読み書きした際、Data モデルは、 MM_GETDATA
および MM_DATA_CHANGED
メッセージをプレゼンテーションに送信します。
TDataModel は、DataSource プロパティを定義しており、ここにはキー/値ペアのコレクションが格納されています。キーは文字列で、値は TValue のインスタンスです。TValue 型は任意の型ののデータを保持および処理することができます。このため、 DataSource コレクションは必要などんなデータを保持することができます。つまり、任意の型のデータを保持するのに、TDataModel は個別に新しいクラスを作成する必要がありません。たとえば、文字列の配列を保持することができ、これは、エディター内に表示される点後のコレクションとして使用できます。このようになります:
type
TStringArray = TArray<string>;
var
ArrayList1, ArrayList2: TStringArray;
...
{ Setting/Getting value of array type }
ArrayList1 := ['Apple', 'ARC', 'Auto', 'Allday', 'Alltime'];
Edit1.Model.Data['array_value'] := TValue.From<TStringArray>(ArrayList1);
...
if Edit1.Model.Data['array_value'].IsType<TStringArray> then
ArrayList2 := Edit1.Model.Data['array_value'].AsType<TStringArray>;
データ モデルを作成した際、プレゼンテーション コントロールをコンストラクタに渡さなければなりません。指定されたプレゼンテーション コントロールはモデルを所有します。
関連項目
- FMX.Controls.Model.TDataModel.DataSource
- FMX.Controls.Model.TDataModel.Data
- System.Generics.Collections.TDictionary
- FMX.Controls.Presentation.TPresentedControl
- FMX.Presentation.Messages.TMessageSender.Receiver
- FMX.Controls.Presentation.TPresentedControl.Model
- FMX.Controls.Model.TDataModel.Owner
- System.String
- System.Rtti.TValue