exponenta event banner

События динамических свойств

Динамические свойства и обычные события свойств

Динамические свойства поддерживают набор свойств и получение событий, чтобы можно было определить прослушиватели для этих свойств. Прослушиватели привязаны к определенному динамическому свойству, для которого они определены.

Если удалить динамическое свойство, а затем создать другое динамическое свойство с тем же именем, прослушиватели не будут реагировать на события, созданные новым свойством. Прослушиватель, определенный для динамического свойства, которое было удалено, не вызывает ошибки, но обратный вызов прослушивателя не выполняется.

Свойства - установка и запрос событий предоставляет дополнительные сведения о том, как определить прослушиватели для этих событий.

События динамических свойств

Чтобы ответить на добавление и удаление динамических свойств, прикрепите прослушиватели к объектам, содержащим динамические свойства. dynamicprops класс определяет события для этой цели:

  • PropertyAdded - Запускается при добавлении динамического свойства к объекту, производному от dynamicprops класс.

  • PropertyRemoved - Запускается при удалении объекта или meta.DynamicProperty объект, связанный с динамическим свойством.

  • ObjectBeingDestroyed - срабатывает при уничтожении объекта. Это событие наследуется от handle класс.

Эти события имеют открытый доступ к прослушиванию (ListenAccess атрибут) и закрытый доступ к уведомлению (NotifyAccess атрибут).

PropertyAdded и PropertyRemoved события проходят event.DynamicPropertyEvent объект для обратных вызовов прослушивателя. Объект данных события имеет три свойства:

  • PropertyName - имя добавляемого или удаляемого динамического свойства;

  • Source - обрабатывать объект, являющийся источником события;

  • EventName - Наименование события (PropertyAdded, PropertyRemoved, или ObjectBeingDestroyed)

Прослушивание определенного имени свойства

Предположим, что имеется приложение, создающее динамическое свойство при определенных условиях. Вы хотите:

  • Задать значение скрытого свойства равным true когда свойство с именем SpecialProp добавляется.

  • Задайте значение скрытого свойства равным false когда SpecialProp удаляется.

Используйте event.DynamicPropertyEvent для определения имени свойства и его добавления или удаления.

DynamTest класс является производным от dynamicprops. Он определяет скрытое свойство, HiddenProp.

classdef DynamTest < dynamicprops
   properties (Hidden)
      HiddenProp
   end
end

Определите функцию обратного вызова, использующую EventName свойство данных события, чтобы определить, добавлено или удалено свойство. Получение имени свойства из PropertyName свойство данных события. Если динамическое свойство имеет имя SpecialPropизмените значение скрытого свойства.

function DyPropEvtCb(src,evt)
   switch evt.EventName
      case 'PropertyAdded'
         switch evt.PropertyName
            case 'SpecialProp'
               % Take action based on the addition of this property
               %...
               %...
               src.HiddenProp = true;
               disp('SpecialProp added')
            otherwise
               % Other property added
               % ...
               disp([evt.PropertyName,' added'])
         end
      case 'PropertyRemoved'
         switch evt.PropertyName
            case 'SpecialProp'
               % Take action based on the removal of this property
               %...
               %...
               src.HiddenProp = false;
               disp('SpecialProp removed')
            otherwise
               % Other property removed
               % ...
               disp([evt.PropertyName,' removed'])
         end
   end
end

Создание объекта DynamTest класс.

dt = DynamTest;

Добавление прослушивателя для обоих PropertyAdded и PropertyRemoved события.

lad = addlistener(dt,'PropertyAdded',@DyPropEvtCb);
lrm = addlistener(dt,'PropertyRemoved',@DyPropEvtCb);

PropertyAdded Выполнение обратного вызова события

Добавление динамического свойства запускает PropertyAdded событие. Эта инструкция добавляет динамическое свойство к объекту и сохраняет возвращенное meta.DynamicProperty объект.

ad = addprop(dt,'SpecialProp');

Добавление динамического свойства вызывает выполнение прослушивателем функции обратного вызова, DyPropEvtCb. Функция обратного вызова присваивает значение true в HiddenProp собственность.

dt.HiddenProp
ans =

     1

PropertyRemoved Выполнение обратного вызова события

Удаление динамического свойства путем вызова delete на meta.DynamicProperty объект, возвращаемый addprop способ. Удаление meta.DynamicProperty объект запускает PropertyRemoved событие.

Удалить meta.DynamicProperty возвращенный при добавлении динамического свойства SpecialProp.

delete(ad)

Обратный вызов выполняется:

SpecialProp removed

Значение HiddenProp сейчас false.

dt.HiddenProp
ans =

     0

Как найти meta.DynamicProperty Объекты

Вы можете получить meta.DynamicProperty объект для динамического свойства с использованием findprop. Использовать findprop если объект не возвращен addprop.

ad = findprop(dt,'SpecialProp');

Связанные темы