Свойства меню

Управляйте внешним видом и поведением меню

Меню отображают выпадающие списки опций наверху окна приложения. Вызовите функцию uimenu, чтобы создать меню или добавить подменю к существующему меню. Свойства управляют внешним видом и поведением меню. Используйте запись через точку, чтобы относиться к конкретному объекту и свойству.

m = uimenu;
m.Text = 'Open Selection';

Меню

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

Метка меню, заданная как вектор символа или скаляр строки. Это свойство задает метку, которая появляется в меню (или пункт меню).

Можно задать мнемосхему для метки с помощью амперсанда (&) символа. Символ, который следует за амперсандом, кажется подчеркнутым в меню. Пользователь может выбрать пункт меню путем нажатия клавиши ALT, сопровождаемой подчеркнутым символом.

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

Если вы хотите отобразить амперсанд в метке меню, задайте два последовательных амперсанда.

Вот некоторые примеры:

Маркируйте ValueМетка появившегося меню
'&Open Selection'Открытый Выбор (нажатие Alt подчеркивает O),
'O&pen Selection'Открытый Выбор (нажатие Alt подчеркивает p),
'&Save && Go'Save & Go (нажатие Alt подчеркивает S),
'Save& Go'Save& Идут (пробел не может быть мнемоническим символом),

Примечание

Избегайте использования этих чувствительных к регистру зарезервированных слов: “значение по умолчанию”, “удалите”, и “фабрика”. Если необходимо использовать зарезервированное слово, то выйдите из того слова путем предшествования ему с символом наклонной черты влево. Например, '\default' выходит из “значения по умолчанию”.

Эквивалент клавиатуры, заданный как символ. Это свойство задает символ эквивалента клавиатуры для выбора пункта меню. Определение значения Accelerator позволяет пользователям выбирать пункт меню путем нажатия символа и другого ключа, вместо того, чтобы выбрать пункт меню с мышью. Сочетание клавиш является конкретной платформой:

  • Для Windows® последовательность является Ctrl+Accelerator.

  • Для систем Macintosh последовательность является Command+Accelerator.

  • Для систем Linux® последовательность является Ctrl+Accelerator.

Сочетания клавиш работают, даже когда родительское меню сворачивается. Однако некоторые ограничения применяются:

  • Окно приложения должно быть в особом внимании при вводе последовательности сочетания клавиш.

  • Акселераторы только работают когда:

    • Пункт меню не является пунктом меню верхнего уровня.

    • Пункт меню не содержит элементов подменю.

    • Пункт меню выполняет функцию обратного вызова.

    • Пункт меню имеет набор свойств Visible к 'on'.

Чтобы удалить значение Accelerator, установите свойство Accelerator на ''.

Строка разделителя выше пункта меню, заданного как 'off' или 'on'. Установка этого свойства к 'on' чертит разделительную линию выше пункта меню.

Примечание

Свойство Separator проигнорировано, когда пункт меню является пунктом меню верхнего уровня.

Контрольный индикатор меню, заданный как 'off' или 'on'. Установка этого свойства к 'on' помещает галочку рядом с соответствующим пунктом меню. Установка его к 'off' удаляет галочку. Можно использовать эту функцию, чтобы показать состояние пунктов меню, которые включают или отключают функциональность в приложении.

Примечание

Свойство Checked проигнорировано, когда пункт меню:

  • Пункт меню верхнего уровня

  • Пункт меню, который содержит один или несколько элементов нижестоящего меню

Цвет метки меню, заданный как триплет RGB или один из перечисленных в таблице параметров цвета.

Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должны быть в диапазоне [0,1]; например, [0,4 0,6 0,7]. Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены варианты длинного и краткого наименований цветов и их эквивалентные значения RGB.

ОпцияОписаниеЭквивалентный триплет RGB
'красный' или 'r'Красный[1 0 0]
'green' или 'g'Зеленый[0 1 0]
'blue' или 'b'Синий[0 0 1]
'yellow' или 'y'Желтый[1 1 0]
'пурпурный' или 'm'Пурпурный[1 0 1]
'голубой' или 'c'Голубой[0 1 1]
'white' или 'w'Белый[1 1 1]
'black' или 'k'Черный[0 0 0]

Метка меню, заданная как вектор символа или скаляр строки. Это свойство задает метку, которая появляется в меню (или пункт меню).

Примечание

Использование свойства Label не рекомендуется. Это может быть удалено в будущем релизе. Используйте свойство Text вместо этого.

Относительное положение меню, заданное как скалярное целочисленное значение. Значение свойства Position указывает на размещение на панели меню или в рамках меню. Меню верхнего уровня появляются слева направо на панели меню согласно значению их свойства Position с 1, представляющим крайнее левое положение. Отдельные элементы в рамках данного меню появляются сверху донизу согласно значению их свойства Position с 1, представляющим самое верхнее положение.

Примечание

Использование свойства Position не рекомендуется. Это может быть удалено в будущем релизе. Чтобы изменить порядок пунктов меню, используйте свойство Children или функцию uistack вместо этого.

Интерактивность

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

Видимость компонента, заданная как 'on' или 'off'. Когда Visible свойство установлено в 'off', компонент не видим в пользовательском интерфейсе, но можно запросить и установить его свойства.

Рабочее состояние меню, заданного как 'on' или 'off'. Это свойство управляет, может ли пользователь выбрать пункт меню. То, когда значением является 'off', метка меню появляется, потускнело, указав, что пользователь не может выбрать его.

Обратные вызовы

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

Меню выбрало обратный вызов, заданный как одно из этих значений:

  • Указатель на функцию.

  • Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.

  • Вектор символа, содержащий допустимое выражение MATLAB® (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.

Для получения дополнительной информации об указании значения свойства обратного вызова, например, указателя на функцию, массива ячеек или символьного вектора, см. Раздел "Как задать значения свойств обратного вызова".

Этот обратный вызов отвечает в зависимости от местоположения пункта меню и типа взаимодействия:

  • Щелчок левой кнопкой по меню расширяет то меню и инициировал его обратный вызов.

  • В то время как любое меню расширено, колеблясь, любое другое родительское меню (или меню верхнего уровня) расширяет то меню и инициировало его обратный вызов.

Примечание

Не используйте обратный вызов, чтобы динамически изменить пункты меню. Удаление, добавляя, и заменяющий пункты меню в обратном вызове может привести к пустому меню. Вместо этого используйте свойство Visible для пунктов меню hide или show. Можно также включить и отключить пункты меню путем установки свойства Enable. Чтобы полностью повторно заполнить пункты меню, удалите и создайте их вне обратного вызова.

Функция создания компонентов, заданная в качестве одного из следующих значений:

  • Указатель на функцию.

  • Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.

  • Вектор символа, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.

Для получения дополнительной информации об указании значения свойства обратного вызова, например, указателя на функцию, массива ячеек или символьного вектора, см. Раздел "Как задать значения свойств обратного вызова".

Это свойство задает функцию обратного вызова, чтобы выполниться, когда MATLAB создает компонент. MATLAB инициализирует все значения свойства компонентов прежде, чем выполнить обратный вызов CreateFcn. Если вы не задаете свойство CreateFcn, то MATLAB выполняет функцию создания по умолчанию.

Используйте функцию gcbo в своем коде CreateFcn, чтобы получить объект компонента, который создается.

Установка свойства CreateFcn на существующем объекте компонента не имеет никакого эффекта.

Функция удаления компонента, заданная в качестве одного из следующих значений:

  • Указатель на функцию.

  • Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.

  • Вектор символа, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.

Для получения дополнительной информации об указании значения свойства обратного вызова, например, указателя на функцию, массива ячеек или символьного вектора, см. Раздел "Как задать значения свойств обратного вызова".

Свойство DeleteFcn задает функцию обратного вызова, чтобы выполниться, когда MATLAB удаляет компонент (например, когда пользователь закрывает окно). MATLAB выполняет обратный вызов DeleteFcn прежде, чем уничтожить свойства объекта компонента. Если вы не задаете свойство DeleteFcn, то MATLAB выполняет функцию удаления по умолчанию.

Используйте функцию gcbo в своем коде DeleteFcn, чтобы получить объект компонента, который удаляется.

Меню выбрало обратный вызов, заданный как одно из этих значений:

  • Указатель на функцию.

  • Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.

  • Вектор символа, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.

Примечание

Использование свойства Callback не рекомендуется. Это может быть удалено в будущем релизе. Используйте MenuSelectedFcn вместо этого.

Контроль выполнения обратного вызова

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

Прерывание обратного вызова, обозначаемое как 'on' или 'off'. Свойство «Прерывание» определяет, можно ли прерывать выполняемый обратный вызов.

Существует два состояния обратного вызова:

  • Выполняемый обратный вызов — это актуальный на данный момент обратный вызов.

  • Прерывающий обратный вызов — это обратный вызов, который пытается прервать текущий обратный вызов.

Каждый раз, когда MATLAB вызывает обратный вызов, этот обратный вызов пытается прервать текущий обратный вызов (если он существует). Свойство «Прерывание» объекта, имеющего текущий обратный вызов, определяет, разрешено ли прерывание:

  • Значение 'on' позволяет другим обратным вызовам прерывать обратные вызовы объекта. Прерывание происходит на следующем этапе, где MATLAB обрабатывает очередь, такой как тогда, когда существует drawnow, фигура, getframe, waitfor, или сделать паузу.

    • Если текущий обратный вызов содержит одну из этих команд, MATLAB останавливает выполнение обратного вызова в этой точке и выполняет прерывание обратного вызова. MATLAB возобновляет выполнение обратного вызова при завершении прерывания.

    • Если текущий обратный вызов не содержит одну из этих команд, MATLAB завершает выполнение обратного вызова без прерывания.

  • Значение 'off' блокирует все попытки прерывания. Свойство BusyAction объекта, владеющего прерывистым обратным вызовом, определяет, отменяется ли прерывание обратного вызова или помещается в очередь.

Примечание

Прерывание и выполнение обратного вызова происходят по-разному в таких ситуациях:

  • Если прерывающий обратный вызов является обратным вызовом DeleteFcn, CloseRequestFcn или SizeChangedFcn, то прерывание происходит независимо от значения свойства прерывания.

  • Если текущий обратный вызов выполняет функцию waitfor, то прерывание происходит независимо от значения свойства прерывания.

  • Объекты-таймеры выполняются в соответствии с расписанием независимо от значения свойства прерывания.

  • MATLAB не сохраняет состояние свойств или отображения, когда прерывание происходит. Например, объект, возвращенный командой gca или gcf, может измениться при выполнении другого обратного вызова.

Смотрите Выполнение обратного вызова Прерывания для примера, который показывает, как свойства Interruptible и BusyAction влияют на поведение программы.

Постановка в очередь обратного вызова, заданная как 'queue' (значение по умолчанию) или 'cancel'. The BusyAction property determines how MATLAB handles the execution of interrupting callbacks. There are two callback states to consider:

  • Выполняемый обратный вызов — это актуальный на данный момент обратный вызов.

  • Прерывающий обратный вызов — это обратный вызов, который пытается прервать текущий обратный вызов.

Свойство BusyAction источника прерывания обратного вызова определяет, как MATLAB обрабатывает свое выполнение. Свойство BusyAction имеет эти значения:

  • 'queue' — поместите прерывающий обратный вызов в очередь вызовов, подлежащих обработке после завершения обратного вызова.

  • cancel' — не выполнять прерывание обратного вызова.

Каждый раз, когда MATLAB вызывает обратный вызов, тот обратный вызов всегда пытается прервать выполняющийся обратный вызов. Свойство Interruptible объекта, обратный вызов которого запускается, определяет, позволено ли прерывание. Если Interruptible установлен в:

  • 'on' — Прерывание происходит в следующей точке, где MATLAB обрабатывает очередь. Это значение по умолчанию.

  • Свойство off — The BusyAction (объекта, владеющего прерыванием обратного вызова), определяет, ставит ли MATLAB в очередь или игнорирует прерывание обратного вызова.

Смотрите Выполнение обратного вызова Прерывания для примера, который показывает, как свойства BusyAction и Interruptible влияют на поведение программы.

Это свойство доступно только для чтения.

Удаление статуса, возврат на 'off' или 'on'. MATLAB задает значение свойства BeingDeleted 'on', когда обратный вызов DeleteFcn начинает выполнение. Значение свойства BeingDeleted остается 'on' до того момента, как объект перестанет существовать.

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

Это свойство не имеет никакого эффекта на объекты Menu.

Родительский элемент/Дочерний элемент

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

Это свойство доступно только для чтения.

Родительский объект, заданный как Figure, ContextMenu или объект Menu. Можно переместить пункт меню в различное окно или переместить его в соответствии с различным меню путем установки этого свойства.

Дочерние элементы меню, возвращенные как пустой GraphicsPlaceholder или 1D массив объектов Menu. Дочерние элементы меню являются другой этой функцией меню как подменю.

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

Чтобы добавить дочерний элемент к этому списку, установите свойство Parent дочернего компонента быть объектом Menu.

Объекты с набором свойств HandleVisibility к 'off' не перечисляют в свойстве Children.

Видимость указателя на объект, заданного как 'on', 'callback' или 'off'.

Это свойство управляет видимостью указателя на объект в его родительском списке дочерних элементов. Когда указатель не видим в своем родительском списке дочерних элементов, он не возвращен функциями, которые получают указатели путем поиска иерархии объектов или запроса свойств указателя. Эти функции включают get, findobj, gca, gcf, gco, newplot, cla, clf и close. Свойство HandleVisibility также управляет видимостью указателя объекта в свойстве CurrentObject родительской фигуры. Указатели все еще допустимы, даже если они не видимы. Если вы можете получить доступ к объекту, вы можете установить его, получить его свойства и передать его любой функции, которая работает с объектами.

Значение HandleVisibilityОписание
'on'Указатель на объект всегда видим.
'callback'Указатель на объект видим из обратных вызовов или функций, вызванных обратными вызовами, но не из функций, вызванных из командной строки. Эта опция блокирует доступ к объекту в командной строке, но позволяет обратным вызовам обращаться к нему.
'off'Указатель на объект невидим в любом случае. This option is useful for preventing unintended changes to the UI by another function. Set the HandleVisibility to 'off' to temporarily hide the handle during the execution of that function.

Установите графическое корневое свойство ShowHiddenHandles на 'on' делать все указатели видимыми, независимо от их значения HandleVisibility. Эта установка не имеет никакого эффекта на их значения HandleVisibility.

Идентификаторы

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

Это свойство доступно только для чтения.

Тип графического объекта, возвращенного как 'uimenu'.

Идентификатор объекта, заданный как вектор символа или скаляр строки. Можно задать уникальное значение Tag, чтобы служить идентификатором для объекта. Когда вам нужен доступ к объекту в другом месте вашего кода, вы можете использовать функцию findobj для поиска объекта на основе значения тега.

Пользовательские данные, заданные как любой массив. Определение UserData может быть полезно для обмена данными в рамках приложений. Смотрите Осуществляют обмен данными Среди Обратных вызовов для получения дополнительной информации.

Представлено до R2006a

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