event.PropertyEvent クラス
名前空間: event
プロパティ イベントのデータ
説明
event.PropertyEvent
クラスは、以下の事前定義されたプロパティ イベントのリスナーに渡されるイベント データ オブジェクトを定義します。
PreGet
PostGet
PreSet
PostSet
事前定義されたプロパティ イベントによりリスナーが有効になり、プロパティ値の変更に対して応答します。詳細については、プロパティ値変更のリスニングを参照してください。
event.PropertyEvent
クラスは、event.EventData
のシールされたサブクラスです (すなわち、event.PropertyEvent
をサブクラス化することはできません)。クラス コンストラクターはプライベートです。MATLAB® が、プロパティ イベントのリスナーに渡す event.PropertyEvent
オブジェクトを作成します。
event.PropertyEvent
クラスは handle
クラスです。
クラスの属性
Sealed | true |
ConstructOnLoad | true |
HandleCompatible | true |
RestrictsSubclassing | true |
クラス属性の詳細については、クラスの属性を参照してください。
プロパティ
例
プロパティ イベントのリスニング
プロパティ イベントの観察を有効にする PropOne
GetObservable
および SetObservable
属性を使用して、propEventClass
クラスを定義します。クラス コンストラクターは、これらのイベントのリスナーを追加します。
classdef propEventClass < handle % Class to observe property events properties (GetObservable,SetObservable) PropOne string = "default" end methods function obj = propEventClass addlistener(obj,'PropOne','PreGet',@propEventHandler); addlistener(obj,'PropOne','PostSet',@propEventHandler); end end end
関数 propEventHandler
は、PreGet
イベントおよび PostSet
イベントのコールバックとして機能します。
event.PropertyEvent
オブジェクトの Source
プロパティには、PropOne
の matlab.metadata.Property
オブジェクトが含まれます。matlab.metadata.Property
の Name
プロパティにアクセスし、イベントをトリガーするプロパティの名前を取得します。コールバックが複数のプロパティを扱う場合は、プロパティ名によって切り替えます。
event.PropertyEvent
オブジェクトの EventName
プロパティには、イベント名が含まれます。コールバックからの複数のプロパティ イベントを扱うには、イベント名によって切り替えます。
function propEventHandler(~,eventData) switch eventData.Source.Name % Get property name case 'Prop1' switch eventData.EventName % Get the event name case 'PreGet' fprintf('%s\n','***PreGet triggered***') case 'PostSet' fprintf('%s\n','***PostSet triggered***') disp(eventData.AffectedObject.(eventData.Source.Name)); end end end
PropOne
プロパティ値を参照すると、propEventHandler
から PreGet
イベントへの応答が起こります。
obj = propEventClass; obj.PropOne
***PreGet triggered*** ans = "default"
PropOne
プロパティに値を割り当てると、propEventHandler
から PostSet
イベントへの応答が起こります。
コールバックは PostSet
イベントの後に新しい値を表示するためにプロパティ値を取得するため、PreGet
イベントがトリガーされます。また、代入ステートメントはセミコロンにより終了していないため、MATLAB はプロパティ値を取得してコマンド ウィンドウにオブジェクトを表示します。これにより、PreGet
イベントが再度トリガーされます。
obj.PropOne = "New string"
***PostSet triggered*** ***PreGet triggered*** New string obj = ***PreGet triggered*** propEventClass with properties: PropOne: "New string"
バージョン履歴
R2008a で導入