Управление внешним видом и поведением контекстного меню
Контекстное меню - это меню, которое появляется при щелчке правой кнопкой мыши по графическому объекту или компоненту пользовательского интерфейса. Используйте uicontextmenu
функция для создания контекстного меню и задания свойств. Изменяя значения свойств, можно изменить внешний вид и поведение контекстного меню. Используйте запись через точку для ссылки на определенный объект контекстного меню и свойство. Можно родительский элемент контекстное меню в рисунок, созданное с помощью uifigure
или figure
функция.
fig = uifigure; cm = uicontextmenu(fig); m = uimenu(cm,'Text','Go To File'); fig.ContextMenu = cm;
ContextMenuOpeningFcn
- Функция открытия обратного вызова контекстного меню''
(по умолчанию) | указатель на функцию | массив ячеек | вектор символовФункции обратного вызова открытия контекстного меню, заданные как одно из следующих значений:
Указатель на функцию.
Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.
Вектор символов, содержащий допустимый MATLAB® выражение (не рекомендуемое). MATLAB оценивает это выражение в базовом рабочем пространстве.
Для получения дополнительной информации об указании значения свойства коллбэка как указателя на функцию, массива ячеек или вектора символов, см. Раздел «Как задать значения свойств коллбэка».
CreateFcn
- Функция создания''
(по умолчанию) | указатель на функцию | массив ячеек | вектор символовФункция создания объектов, заданная в качестве одного из следующих значений:
Указатель на функцию.
Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.
Вектор символов, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.
Дополнительные сведения об указании коллбэка как указателя на функцию, массива ячеек или вектора символов см. в разделе Запись коллбэков в App Designer.
Это свойство задает функцию обратного вызова, которая должна выполняться, когда MATLAB создает объект. MATLAB инициализирует все значения свойств перед выполнением CreateFcn
коллбэк. Если вы не задаете CreateFcn
свойство, затем MATLAB выполняет функцию создания по умолчанию.
Установка CreateFcn
свойство в существующем компоненте не имеет никакого эффекта.
Если вы задаете это свойство как указатель на функцию или массив ячеек, можно получить доступ к объекту, который создается с помощью первого аргумента функции обратного вызова. В противном случае используйте gcbo
функция для доступа к объекту.
DeleteFcn
- Функция удаления''
(по умолчанию) | указатель на функцию | массив ячеек | вектор символовФункция удаления объектов, заданная в качестве одного из следующих значений:
Указатель на функцию.
Массив ячеек, в котором первый элемент является указателем на функцию. Последующие элементы массива ячеек являются аргументами, которые передаются в функцию обратного вызова.
Вектор символов, содержащий допустимое выражение MATLAB (не рекомендуемый). MATLAB оценивает это выражение в базовом рабочем пространстве.
Дополнительные сведения об указании коллбэка как указателя на функцию, массива ячеек или вектора символов см. в разделе Запись коллбэков в App Designer.
Это свойство задает функцию обратного вызова, которая должна выполняться, когда MATLAB удаляет объект. MATLAB выполняет DeleteFcn
коллбэк перед уничтожением свойств объекта. Если вы не задаете DeleteFcn
свойство, затем MATLAB выполняет функцию удаления по умолчанию.
Если вы задаете это свойство как указатель на функцию или массив ячеек, можно получить доступ к удаляемому объекту с помощью первого аргумента функции обратного вызова. В противном случае используйте gcbo
функция для доступа к объекту.
Interruptible
- Прерывание коллбэка'on'
(по умолчанию) | логическое значение включения/выключенияПрерывание коллбэка, заданное как 'on'
или 'off'
, или как числовое или логическое 1
(true
) или 0
(false
). Значение 'on'
эквивалентно true
, и 'off'
эквивалентно false
. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState
.
Это свойство определяет, можно ли прерывать выполняемый коллбэк. Существует два состояния коллбэка:
Обратный коллбэк running - это актуальный на данный момент коллбэк.
Обратный коллбэк interrupting - это коллбэк, который пытается прервать текущий коллбэк.
Всякий раз, когда MATLAB вызывает коллбэк, этот коллбэк пытается прервать текущий коллбэк (если он существует). The Interruptible
свойство объекта, имеющего текущий коллбэк, определяет, разрешено ли прерывание.
Значение 'on'
позволяет другим коллбэкам прерывать коллбэки объекта. Прерывание происходит в следующей точке, где MATLAB обрабатывает очередь, например, когда есть drawnow
, figure
, uifigure
, getframe
, waitfor
, или pause
команда.
Если текущий коллбэк содержит одну из этих команд, MATLAB останавливает выполнение коллбэка в этой точке и выполняет прерывание обратного вызова MATLAB возобновляет выполнение текущего коллбэка после завершения прерывания обратного вызова.
Если текущий коллбэк не содержит одну из этих команд, MATLAB завершает выполнение коллбэка без прерывания.
Значение 'off'
блокирует все попытки прерывания. The BusyAction
свойство объекта, имеющего прерывание обратного вызова, определяет, отменяется ли прерывание обратного вызова или помещается в очередь.
Примечание
Прерывание и выполнение коллбэка происходят по-разному в таких ситуациях:
Если прерывание обратного вызова является DeleteFcn
, CloseRequestFcn
или SizeChangedFcn
коллбэк, тогда прерывание происходит независимо от Interruptible
значение свойства.
Если текущий коллбэк выполняющегося в данного момента, waitfor
function, тогда прерывание происходит независимо от Interruptible
значение свойства.
Timer
объекты выполняются в соответствии с расписанием независимо от Interruptible
значение свойства.
Когда происходит прерывание, MATLAB не сохраняет состояние свойств или отображения. Для примера, объект, возвращенный gca
или gcf
команда может измениться при выполнении другого коллбэка.
BusyAction
- постановка в очередь коллбэков'queue'
(по умолчанию) | 'cancel'
Постановка в очередь коллбэков, заданная как 'queue'
или 'cancel'
. The BusyAction
свойство определяет, как MATLAB обрабатывает выполнение прерываний обратного вызова. Существует два состояния коллбэка:
Обратный коллбэк running - это актуальный на данный момент коллбэк.
Обратный коллбэк interrupting - это коллбэк, который пытается прервать текущий коллбэк.
Всякий раз, когда MATLAB вызывает коллбэк, этот коллбэк пытается прервать текущий коллбэк. The Interruptible
свойство объекта, имеющего текущий коллбэк, определяет, разрешено ли прерывание. Если прерывание не разрешено, то BusyAction
свойство объекта, имеющего прерывание обратного вызова, определяет, будет ли оно сброшено или помещено в очередь. Это возможные значения BusyAction
свойство:
'queue'
- помещает прерывание обратного вызова в очередь вызовов, подлежащих обработке после концов обратного коллбэка.
'cancel'
- Не выполняет прерывание обратного вызова.
BeingDeleted
- Статус удаленияЭто свойство доступно только для чтения.
Статус удаления, возвращенный как логическое значение включения/выключения типа matlab.lang.OnOffSwitchState
.
MATLAB устанавливает BeingDeleted
свойство к 'on'
когда DeleteFcn
коллбэк начинает выполняться. The BeingDeleted
свойство остается установленным на 'on'
пока объект компонента не перестанет существовать.
Проверьте значение BeingDeleted
свойство, чтобы убедиться, что объект не будет удален до запроса или изменения.
Parent
- Родительский объектFigure
объектРодительский объект, заданный как Figure
объект, созданный с помощью uifigure
или figure
функция. Если родительский рисунок не задан, MATLAB вызывает figure
функция создать тот, который служит родительским элементом.
Можно переместить ContextMenu
объект другому рисунку путем установки этого свойства на целевой объект Figure
объект.
Children
- Дочерние элементы контекстного менюGraphicsPlaceholder
массив (по умолчанию) | вектор Menu
объектыДочерние элементы контекстного меню, возвращенные как пустые GraphicsPlaceholder
или вектор Menu
объекты.
Вы не можете добавить или удалить дочерние элементы, используя Children
свойство. Используйте это свойство для просмотра списка дочерних элементов или для переупорядочивания элементов дочернего меню. Порядок дочерних элементов в этом массиве отражает обратный порядок отображения элементов меню в открытом контекстном меню.
Для примера этот код создает три контекстных меню. Когда вы открываете контекстное меню в запущенном приложении, Menu1
появляется в качестве первой опции меню.
fig = uifigure; cm = uicontextmenu(fig); m1 = uimenu(cm,'Text','Menu1'); m2 = uimenu(cm,'Text','Menu2'); m3 = uimenu(cm,'Text','Menu3'); fig.ContextMenu = cm;
cm.Children
возвращает список элементов меню в обратном порядке.
cm.Children
ans = 3×1 Menu array: Menu (Menu3) Menu (Menu2) Menu (Menu1)
Объекты с HandleVisibility
значение свойства установлено в 'off'
не указаны в Children
свойство.
Чтобы добавить дочерний элемент в этот список, установите Parent
свойство другого Menu
объект этому ContextMenu
объект.
HandleVisibility
- Видимость указателя на объект'on'
(по умолчанию) | 'callback'
| 'off'
Видимость указателя на объект, заданная как 'on'
, 'callback'
, или 'off'
.
Это свойство контролирует видимость объекта в его родительский список дочерних элементов. Когда объект не отображается в родительский список дочерних элементов, он не возвращается с помощью функций, которые получают объекты, просматривая иерархию объектов или запрашивая свойства. Эти функции включают get
, findobj
, gca
, gcf
, gco
, newplot
, cla
, clf
, и close
. The HandleVisibility
свойство также контролирует видимость указателя на объект в родительском рисунке CurrentObject
свойство. Объекты действительны, даже если они не видны. Если вы можете получить доступ к объекту, можно задать и получить его свойства, и передать его в любую функцию, которая работает с объектами.
Значение HandleVisibility | Описание |
---|---|
'on' | Указатель на объект всегда отображается. |
'callback' | Указатель на объект виден из коллбэков или функций, вызываемых коллбэками, но не из функций, инициируемых из командной строки. Эта опция блокирует доступ к объекту в командной строке, но позволяет функциям обратного вызова обращаться к нему. |
'off' | Указатель на объект всегда невидим. Эта опция используется для предотвращения непреднамеренных изменений пользовательского интерфейса другой функцией. Установите HandleVisibility на 'off' временно скрыть указатель во время выполнения этой функции. |
Type
- Тип графического объекта'uicontextmenu'
Это свойство доступно только для чтения.
Тип графического объекта, возвращенный как 'uicontextmenu'
.
Tag
- Идентификатор объекта''
(по умолчанию) | символьный вектор | строковый скалярИдентификатор объекта, заданный как вектор символов или строковый скаляр. Можно задать уникальное Tag
значение, которое служит идентификатором для объекта. Когда вам нужен доступ к объекту в другом месте вашего кода, вы можете использовать findobj
функция для поиска объекта на основе Tag
значение.
UserData
- Пользовательские данные[]
(по умолчанию) | массивПользовательские данные, заданные как любой массив. Определение UserData
может быть полезным для обмена данными в приложениях См. Раздел «Обмен данными между коллбэками» для получения дополнительной информации.
Callback
свойство ContextMenu
объекты не рекомендуютсяНе рекомендуемый запуск в R2020a
Начиная с R2020a, используя Callback
свойство ContextMenu
не рекомендуемый объект. Используйте ContextMenuOpeningFcn
свойство ContextMenu
вместо этого объект. Значения свойств те же.
Нет планов по удалению поддержки Callback
свойство ContextMenu
объекты в это время. Однако это свойство больше не отображается в списке, возвращенном вызовом get
функция на ContextMenu
объект.
Visible
и Position
свойства ContextMenu
объекты не рекомендуютсяНе рекомендуемый запуск в R2020a
Начиная с R2020a, используя Visible
и Position
свойства для настройки контекстного меню, которое будет открыто в определенном месте, не рекомендованы. В приложениях, созданных с помощью uifigure
function, использовать open
вместо этого функция.
Нет планов по удалению поддержки Visible
и Position
свойства ContextMenu
объекты в это время. Однако эти свойства больше не отображаются в списке, возвращенном вызовом get
функция на ContextMenu
объект.
open
| uicontextmenu
| uimenu
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.