findobj

Класс: указатель

Нахождение объектов указателя

Синтаксис

Hmatch = findobj (H)
Hmatch = findobj (H, свойство, значение..., свойство, значение)
Hmatch = findobj (H, '-not', свойство, значение)
Hmatch = findobj (H, '-regexp', свойство, значение)
Hmatch = findobj (H, свойство, значение, '-logicaloperator', свойство, значение)
Hmatch = findobj (H, '-функция', fh)
Hmatch = findobj (H, '-функция', свойство, fh)
Hmatch = findobj (H, '-класс ', класс)
Hmatch = findobj (H, '-isa', класс)
Hmatch = findobj (H, '-свойство', свойство)
Hmatch = findobj (H, '-метод', methodname)
Hmatch = findobj (H, '-событие', eventname)
Hmatch = findobj (H, '-глубина', d, ___)

Описание

Hmatch = findobj(H) возвращает объекты, перечисленные в H и всех их потомках.

Hmatch = findobj(H,property,value,...,property,value) находит объекты handle, которые имеют заданный набор свойств к заданному значению.

Hmatch = findobj(H,'-not',property,value) инвертирует выражение в следующем property пара value. Таким образом, найдите объекты, заданное свойство которых не равно value.

Hmatch = findobj(H,'-regexp',property,value) обрабатывает содержимое аргумента value как регулярные выражения.

Hmatch = findobj(H,property,value,'-logicaloperator',property,value) применяет логический оператор к парам имя/значение. Поддерживаемые логические операторы включают:

  • '-or' (значение по умолчанию, если вы не задаете оператор),

  • '-and'

  • xor

Hmatch = findobj(H,'-function',fh) вызывает указатель на функцию fh на объектах в H и возвращает объекты, для которых функция возвращает true.

Hmatch = findobj(H,'-function',property,fh) вызывает указатель на функцию fh на значении заданного свойства для объектов в H и возвращает объекты, для которых функция возвращает true. Функция должна возвратить скалярное логическое значение.

Hmatch = findobj(H,'-class',class) находит все объекты, принадлежащие заданному классу.

Hmatch = findobj(H,'-isa',class) находит все объекты, принадлежащие заданному классу.

Hmatch = findobj(H,'-property',property) находит весь объект в H, имеющем именованное свойство.

Hmatch = findobj(H,'-method',methodname) находит объекты, которые имеют заданное имя метода.

Hmatch = findobj(H,'-event',eventname) находит объекты, которые имеют заданное имя события.

Hmatch = findobj(H,'-depth',d,___) задает сколько уровней в иерархиях экземпляра под объектами в H, чтобы искать.

Задайте весь -options как векторы символов или представьте скаляры в виде строки.

Входные параметры

развернуть все

Объекты искать от, заданный как массив указателей на объект. Если вы не задают опцию '-depth', findobj ищет объекты во входном массиве H и дочерние объекты в иерархии экземпляра.

Имя свойства, заданное как чувствительный к регистру, заключенный в кавычки текст.

Типы данных: char | string

Класс объекта найти, заданный как чувствительный к регистру, заключенный в кавычки текст.

Типы данных: char | string

Значение свойства, заданное как значение или выражение MATLAB®.

Имя метода, заданное как чувствительный к регистру заключенный в кавычки текст.

Типы данных: char | string

Имя события, заданное как чувствительный к регистру заключенный в кавычки текст.

Типы данных: char | string

Глубина поиска, заданного как целое число, указывающее на количество уровней ниже любого данного объекта во входном массиве H.

  • d = n — Ищите уровни n иерархии ниже каждого объекта в H

  • d = 0 — Ищите только тот же уровень как объекты в H.

  • d = inf — Ищите все уровни ниже объектов в H. Это значение по умолчанию.

Указатель на функцию, задавая функцию, которая выполнена для каждого объекта во входном массиве H. Эта функция должна возвратить скаляр, логическое значение, указывающее, существует ли соответствие (true) или не (false).

Выходные аргументы

развернуть все

Объекты найдены поиском, возвращенным как массив указателя.

Примеры

Объект с определенным значением свойства

Найдите объект с определенным значением свойства. Учитывая класс handle, BasicHandle:

classdef BasicHandle < handle
   properties
      Prop1
   end
   methods
      function obj = BasicHandle(val)
         if nargin > 0
            obj.Prop1 = val;
         end
      end
   end
end

Создайте массив объектов BasicHandle:

h(1) = BasicHandle(7);
h(2) = BasicHandle(11);
h(3) = BasicHandle(27);

Найдите указатель объекта, свойство Prop1 которого имеет значение 7:

h7 = findobj(h,'Prop1',7);
h7.Prop1
ans =

     7

Объект с определенным именем свойства

Найдите объект с определенным динамическим свойством. Учитывая класс button:

classdef button < dynamicprops
   properties
      UiHandle
   end
   methods
      function obj = button(pos)
         if nargin > 0
            if length(pos) == 4
               obj.UiHandle = uicontrol('Position',pos,...
                'Style','pushbutton');
            else
               error('Improper position')
            end
         end
      end     
   end   
end

Создайте массив объектов кнопки, только один элемент которых задает динамическое свойство. Используйте findobj, чтобы получить указатель объекта с динамическим свойством под названием ButtonCoord:

b(1) = button([20 40 80 20]);
addprop(b(1),'ButtonCoord');
b(1).ButtonCoord = [2,3];
b(2) = button([120 40 80 20]);
b(3) = button([220 40 80 20]);

h =  findobj(b,'-property','ButtonCoord');
h.ButtonCoord
ans =

     2     3

Советы

  • findobj имеет доступ только к общедоступным участникам.

  • Если нет никаких соответствий, findobj возвращает пустой массив того же класса как входной массив H.

  • Приоритет логических операторов следует правилам приоритета MATLAB. Для получения дополнительной информации см. Приоритет операторов.

  • Управляйте приоритетом путем группировки в массивах ячеек

Смотрите также

Введенный в R2008a

Была ли эта тема полезной?