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 で導入