findobj

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

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

Синтаксис

Hmatch = findobj(H)
Hmatch = findobj(H,property,value,...,property,value)
Hmatch = findobj(H,'-not',property,value)
Hmatch = findobj(H,'-regexp',property,expression)
Hmatch = findobj(H,property,value,logicaloperator,property,value)
Hmatch = findobj(H,'-function',fh)
Hmatch = findobj(H,'-function',property,fh)
Hmatch = findobj(H,'-class',class)
Hmatch = findobj(H,'-isa',class)
Hmatch = findobj(H,'-property',property)
Hmatch = findobj(H,'-method',methodname)
Hmatch = findobj(H,'-event',eventname)
Hmatch = findobj(H,'-depth',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,expression) использует регулярное выражение, заданное в expression найти свойства с определенными значениями. Не все классы поддержали использование регулярного выражения, чтобы найти значения свойств.

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 имеет -regexp опции, не все классы поддерживают эту опцию. Этот пример использует -function опция, чтобы использовать регулярное выражение от функции как альтернатива -regexp опция.

Этот класс задает статический метод, который создает объектный массив. Каждый объект имеет Name свойство, которое содержит символ, представляющий номер элемента массива.

classdef FindRegExpr < handle
    properties
        Name
    end
    methods (Static)
        function b = regXArray
            b = FindRegExpr.empty(0,50);
            for i = 1:50
                b(i).Name = sprintf('%d',i);
            end
        end
    end
end
A = FindRegExpr.regXArray;
a = 

  1×50 FindRegExpr array with properties:

    Name

Найдите объекты чей Name свойство содержит вектор символов, начинающийся с символьного '1'.

subArray = findobj(a, '-function', 'Name', @(x) ~isempty(regexp(x, '^1\d*')));
subArray = 

  11×1 testRegExpr array with properties:

    Name

Советы

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

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

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

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

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

Введенный в R2008a