ContextMenu のプロパティ
コンテキスト メニューの外観と動作の制御
コンテキスト メニューは、グラフィックス オブジェクトまたは UI コンポーネント上で右クリックすると表示されるメニューです。関数 uicontextmenu
を使用して、コンテキスト メニューを作成し、プロパティを設定します。プロパティの値を変更することによって、コンテキスト メニューの外観と動作を変更できます。ドット表記を使用して、特定のコンテキスト メニュー オブジェクトとプロパティを参照します。コンテキスト メニューは、関数 uifigure
または関数 figure
のいずれかで作成された Figure の子にすることができます。
fig = uifigure; cm = uicontextmenu(fig); m = uimenu(cm,'Text','Go To File'); fig.ContextMenu = cm;
コールバック
ContextMenuOpeningFcn
— コンテキスト メニューを開くコールバック関数
''
(既定値) | 関数ハンドル | cell 配列 | 文字ベクトル
コンテキスト メニューを開くコールバック関数。次の値のいずれかとして指定します。
関数ハンドル。
最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。
有効な MATLAB® 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。
コールバックのプロパティ値を関数ハンドル、cell 配列または文字ベクトルとして指定する方法の詳細については、コールバック関数の指定を参照してください。
このコールバック関数は、ユーザー操作に応答してコンテキスト メニューが開くときに実行されます。このコールバック関数を使用して、ユーザーが何を右クリックしたのかに基づいてコンテキスト メニューの外観をカスタマイズできます。
このコールバック関数は、ユーザーのアプリ操作に関する特定の情報にアクセスできます。MATLAB は、この情報を ContextMenuOpeningData
オブジェクトに格納して、2 番目の引数としてコールバック関数に渡します。App Designer では、引数は event
という名前です。ドット表記を使用して、オブジェクトのプロパティをクエリできます。たとえば、event.ContextObject
は、コンテキスト メニューを開くためにユーザーが右クリックしたコンポーネントに関する情報を返します。
メモ
任意のコンテキスト メニューに対して ContextMenuOpeningFcn
コールバックを指定できますが、コールバック イベント データの ContextMenuOpeningData
オブジェクトは、コンテキスト メニューが以下の両方の条件を満たしている場合にのみ使用可能です。
コンテキスト メニューが
uifigure
ベースのアプリ (App Designer で作成されたアプリなど) に関連付けられている。Axes
オブジェクトやLine
オブジェクトなどのグラフィックス オブジェクトではなく、UI コンポーネント、または UI コンポーネントのみを含むコンテナーにコンテキスト メニューが関連付けられている。
次の表に、ContextMenuOpeningData
オブジェクトのプロパティを示します。
プロパティ | 値 |
---|---|
ContextObject | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクト |
InteractionInformation | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたコンポーネント内の位置に関する情報。この情報は、 たとえば、 |
Source | コールバックを実行するコンテキスト メニュー オブジェクト |
EventName | 'ContextMenuOpening' |
次の表に、InteractionInformation
オブジェクトのプロパティを示します。プロパティは、アプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクトによって異なります。
ContextObject | InteractionInformation プロパティ | 値 |
---|---|---|
任意 | Location |
|
ScreenLocation | プライマリ ディスプレイの左下隅を基準とした、ユーザーが右クリックした位置。
| |
Table | DisplayRow | ユーザーの右クリック位置に視覚的に表示されているテーブルの行。数値スカラーとして返されます。 ユーザーがテーブルを並べ替えていない場合、 |
DisplayColumn | ユーザーの右クリック位置に視覚的に表示されているテーブルの列。数値スカラーとして返されます。 ユーザーがテーブルを再配列していない場合、 | |
Row | ユーザーの右クリック位置に対応する元のテーブル データの行。数値スカラーとして返されます。 ユーザーがテーブルを並べ替えていない場合、 | |
Column | ユーザーの右クリック位置に対応する元のテーブル データの列。数値スカラーとして返されます。 ユーザーがテーブルを再配列していない場合、 | |
RowHeader | ユーザーがテーブルの行ヘッダーを右クリックしたかどうか。logical 0 (false ) または logical 1 (true ) として返されます。 | |
ColumnHeader | ユーザーがテーブルの列ヘッダーを右クリックしたかどうか。logical 0 (false ) または logical 1 (true ) として返されます。 | |
Tree | Node | 右クリックされたノード。 ユーザーが右クリックしたツリーの領域がノードに関連付けられていない場合、 |
Level | 右クリックされたノードのレベル。数値スカラーとして返されます。 ユーザーが右クリックしたツリーの領域がノードに関連付けられていない場合、 | |
ListBox | Item | 右クリックされたリスト ボックス項目のインデックス。数値スカラーとして返されます。 ユーザーが右クリックしたリスト ボックスの領域が項目に関連付けられていない場合、 |
CreateFcn
— 作成関数
''
(既定値) | 関数ハンドル | cell 配列 | 文字ベクトル
オブジェクト作成関数。次の値のいずれかとして指定します。
関数ハンドル。
最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。
有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。
コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、App Designer のコールバックを参照してください。
このプロパティは、MATLAB がオブジェクトを作成するときに実行されるコールバック関数を指定します。MATLAB は CreateFcn
コールバックを実行する前に、すべてのプロパティ値を初期化します。CreateFcn
プロパティを指定しない場合、MATLAB は既定の作成関数を実行します。
既存のコンポーネントに CreateFcn
プロパティを設定しても効果はありません。
このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、作成中のオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo
を使用してオブジェクトにアクセスします。
DeleteFcn
— 削除関数
''
(既定値) | 関数ハンドル | cell 配列 | 文字ベクトル
オブジェクト削除関数。次の値のいずれかとして指定します。
関数ハンドル。
最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。
有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。
コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、App Designer のコールバックを参照してください。
このプロパティは、MATLAB がオブジェクトを削除するときに実行されるコールバック関数を指定します。MATLAB は、オブジェクトのプロパティを破棄する前に DeleteFcn
コールバックを実行します。DeleteFcn
プロパティを指定しない場合、MATLAB は既定の削除関数を実行します。
このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、削除されるオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo
を使用してオブジェクトにアクセスします。
コールバック実行制御
Interruptible
— コールバックの割り込み
'on'
(既定値) | on/off logical 値
コールバックの割り込み。'on'
または 'off'
、もしくは数値または logical 1
(true
) または 0
(false
) として指定します。'on'
の値は true
と等価であり、'off'
は false
と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState
型の on/off logical 値として格納されます。
このプロパティは実行中のコールバックが割り込み可能かどうかを決定します。次の 2 つのコールバックの状態について考慮する必要があります。
"実行中" コールバックは、現在実行しているコールバックです。
"割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。
MATLAB は、コールバック キューを処理するコマンドを実行するたびにコールバックの割り込み動作を判別します。これらのコマンドには、drawnow
、figure
、uifigure
、getframe
、waitfor
、pause
があります。
実行中コールバックにこれらのコマンドが含まれていない場合、割り込みは発生しません。MATLAB は、実行中コールバックの実行を先に終了させ、その後に割り込みコールバックを実行します。
実行中コールバックにこれらのいずれかのコマンドが含まれている場合、実行中コールバックを所有するオブジェクトの Interruptible
プロパティに応じて割り込みが発生するかどうかが決まります。
Interruptible
の値が'off'
の場合、割り込みは発生しません。代わりに、割り込みコールバックを所有するオブジェクトのBusyAction
プロパティに応じて、割り込みコールバックが破棄されるかコールバック キューに追加されるかが決まります。Interruptible
の値が'on'
の場合、割り込みが発生します。MATLAB は、コールバック キューの次回処理時に、実行中コールバックの実行を停止し、割り込みコールバックを実行します。割り込みコールバックが完了した後、MATLAB は実行中だったコールバックの実行を再開します。
メモ
コールバックの割り込みと実行は、以下の状況では動作が異なります。
割り込みコールバックが
DeleteFcn
、CloseRequestFcn
またはSizeChangedFcn
コールバックの場合、Interruptible
プロパティの値にかかわらず割り込みが発生します。実行中のコールバックが関数
waitfor
を現在実行している場合、Interruptible
プロパティの値にかかわらず割り込みが発生します。割り込みコールバックが
Timer
オブジェクトで所有されている場合、Interruptible
プロパティの値にかかわらずスケジュールに従ってコールバックが実行されます。
BusyAction
— コールバック キューイング
'queue'
(既定値) | 'cancel'
コールバック キューイング。'queue'
または 'cancel'
として指定します。BusyAction
プロパティは MATLAB による割り込みコールバックの実行の処理方法を決定します。次の 2 つのコールバックの状態について考慮する必要があります。
"実行中" コールバックは、現在実行しているコールバックです。
"割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。
BusyAction
プロパティによってコールバック キューイングの動作が決まるのは、次の両方の条件を満たす場合のみです。
これらの条件に当てはまる場合、割り込みコールバックを所有するオブジェクトの BusyAction
プロパティに応じて MATLAB による割り込みコールバックの処理方法が決まります。BusyAction
プロパティは次の値を取ることができます。
'queue'
— 割り込みコールバックをキューに入れ、実行中のコールバックが終了した後に処理されるようにします。'cancel'
— 割り込みコールバックを実行しません。
BeingDeleted
— 削除状態
on/off logical 値
この プロパティ は読み取り専用です。
削除状態。matlab.lang.OnOffSwitchState
型の on/off logical 値として返されます。
MATLAB は、DeleteFcn
コールバックが実行を開始すると、BeingDeleted
プロパティを 'on'
に設定します。コンポーネント オブジェクトが存在しなくなるまで BeingDeleted
プロパティは 'on'
に設定されたままです。
クエリや変更の前にオブジェクトが削除されようとしていないか確認するために BeingDeleted
プロパティの値をチェックします。
親/子
Children
— コンテキスト メニューの子
空の GraphicsPlaceholder
配列 (既定値) | Menu
オブジェクトのベクトル
コンテキスト メニューの子。空の GraphicsPlaceholder
または Menu
オブジェクトのベクトルとして返されます。
Children
プロパティを使用して子の追加や削除を行うことはできません。このプロパティは、子のリストの表示や子メニュー項目の並べ替えに使用します。この配列の子の順序は、開いたコンテキスト メニューでのメニュー項目表示順序の逆になります。
たとえば、このコードは 3 つのコンテキスト メニューを作成します。実行中のアプリでコンテキスト メニューを開くと、最初のメニュー項目として 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
プロパティにリストされません。
子をこのリストに追加するには、別の Menu
オブジェクトの Parent
プロパティをこの ContextMenu
オブジェクトに設定します。
HandleVisibility
— オブジェクト ハンドルの可視性
'on'
(既定値) | 'callback'
| 'off'
オブジェクト ハンドルの可視性。'on'
、'callback'
または 'off'
として指定します。
このプロパティは、オブジェクトの親がもつ子のリストにおけるそのオブジェクトの可視性を制御します。オブジェクトがその親オブジェクトのリストで、子として可視できない場合、オブジェクト階層の検索またはプロパティのクエリによってオブジェクトを取得する関数は、そのオブジェクトを返しません。このような関数には get
、findobj
、gca
、gcf
、gco
、newplot
、cla
、clf
および close
があります。HandleVisibility
プロパティはまた、親 Figure の CurrentObject
プロパティでオブジェクトのハンドルの可視性も制御します。オブジェクトは参照できない場合も有効です。オブジェクトにアクセスできる場合は、そのプロパティを設定および取得して、それをオブジェクトに作用する任意の関数に渡すことができます。
HandleVisibility の値 | 説明 |
---|---|
'on' | オブジェクト ハンドルは常に表示されます。 |
'callback' | オブジェクト ハンドルはコールバック内から、あるいはコールバックにより呼び出される関数から参照できます。しかし、コマンド ラインから呼び出される関数からは参照できません。このオプションを使用すると、コマンド ラインからのオブジェクトへのアクセスがブロックされますが、コールバック関数からはアクセスできます。 |
'off' | オブジェクト ハンドルは常に非表示です。このオプションは、他の関数による UI の意図しない変更を防止するために役立ちます。HandleVisibility を 'off' に設定すると、その関数の実行中にハンドルが一時的に非表示になります。 |
識別子
Type
— グラフィックス オブジェクトのタイプ
'uicontextmenu'
この プロパティ は読み取り専用です。
グラフィックス オブジェクトのタイプ。'uicontextmenu'
として返されます。
Tag
— オブジェクト識別子
''
(既定値) | 文字ベクトル | string スカラー
オブジェクト識別子。文字ベクトルまたは string スカラーとして指定します。オブジェクトの識別子として機能する一意の Tag
値を指定できます。コードの他の部分からオブジェクトにアクセスする必要がある場合、関数 findobj
を使用して Tag
値に基づいてオブジェクトを検索できます。
UserData
— ユーザー データ
[]
(既定値) | 配列
ユーザー データ。任意の配列として指定します。UserData
を指定すると、アプリ内でデータを共有するのに役立ちます。詳細については、コールバック間のデータ共有を参照してください。
バージョン履歴
R2006a より前に導入R2023b: コンテキスト メニューを開く際に使用されるアクションに関する情報へのアクセス
ContextMenuOpeningFcn
コールバックは、コールバックが UI コンポーネント上のコンテキスト メニューに関連付けられている場合に追加のイベント データをもちます。このデータを使用して、アプリでコンテキスト メニューをカスタマイズおよび共有します。
イベント データ プロパティ | 説明 |
---|---|
ContextObject | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたオブジェクト |
InteractionInformation | アプリ ユーザーがコンテキスト メニューを開くために右クリックしたコンポーネント内の位置 (テーブルのセルなど) に関する情報 |
R2020a: Callback
プロパティは非推奨
R2020a 以降、ContextMenu
オブジェクトの Callback
プロパティの使用は推奨されません。代わりに ContextMenu
オブジェクトの ContextMenuOpeningFcn
プロパティを使用します。プロパティ値は同じです。
現時点では、ContextMenu
オブジェクトの Callback
プロパティのサポートを削除する予定はありません。ただし、このプロパティは、ContextMenu
オブジェクトで関数 get
を呼び出したときに返されるリストには表示されなくなりました。
R2020a: Visible
および Position
プロパティは非推奨
R2020a 以降、Visible
プロパティおよび Position
プロパティを使用して、コンテキスト メニューが特定の位置で開かれるよう設定することは推奨されません。関数 uifigure
を使用して作成されたアプリでは、代わりに関数 open
を使用してください。
現時点では、ContextMenu
オブジェクトの Visible
プロパティおよび Position
プロパティのサポートを削除する予定はありません。ただし、これらのプロパティは、ContextMenu
オブジェクトで関数 get
を呼び出したときに返されるリストには表示されなくなりました。
参考
uimenu
| uicontextmenu
| open
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)