ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Menu のプロパティ

メニューの外観と動作の制御

ここでは、GUIDE または関数 figure で作成されたアプリのメニューに対して有効なプロパティを紹介しています。App Designer または関数 uifigure を使用する場合は、「Menu のプロパティ」を参照してください。詳細については、GUIDE アプリから App Designer への移行を参照してください。

アプリ ウィンドウの最上部のメニューにオプションのドロップダウン リストが表示されます。メニューを作成したり、既存のメニューにサブメニューを追加するには、関数 uimenu を呼び出します。プロパティは、メニューの外観と動作を制御します。ドット表記を使用して、特定のオブジェクトとプロパティを参照します。

f = figure;
m = uimenu(f);
m.Text = 'Open Selection';

メニュー

すべて展開する

メニュー ラベル。文字ベクトルまたは string スカラーとして指定します。このプロパティはメニュー (またはメニュー項目) に表示されるラベルを指定します。

予約語 "default"、"remove" および "factory" (大文字小文字が区別されます) は使用できません。予約語を使用しなければならない場合は、その単語の前にバックスラッシュ文字を指定します。たとえば、"default" は '\default' として指定します。

ラベルのテキストにアンパサンド文字 (&) を使用して、ニーモニックのキーボード ショートカット (Alt+mnemonic) を指定できます。Alt を押すと、メニューにはアンパサンドの次に来る文字が下線付きで表示されます。メニュー項目は Alt キーを押したまま表示される文字を入力すると選択できます。

ニーモニックを使用するには、アプリ内で定義するすべてのメニューおよびメニュー項目のニーモニックを指定しなければなりません。ニーモニックを一部のメニューまたはメニュー項目に対してのみ定義する場合は、Alt キーを押しても効果はありません。ニーモニックはコンテキスト メニュー内のメニューまたはメニュー項目には使用できません。

次の表にいくつか例を示します。

テキスト値ニーモニック ヒント付きメニュー ラベル
'選択を開く(&O)'

'選択を開く(&P)'

'保存 && 移動(&S)'

キーボード ショートカット。文字として指定します。このプロパティを使用して、メニュー項目を選択するキーボード ショートカットを定義します。

例: mitem.Accelerator = 'H'

アクセラレータの値を指定すると、ユーザーはマウスを使用する代わりに、文字と別のキーを押すことによってメニュー項目を選択できます。キーは、使用するプラットフォームに依存します。

  • Windows® システム: Ctrl+accelerator

  • Macintosh システム: Command+accelerator

  • Linux® システム: Ctrl+accelerator

アクセラレータを使用する際の注意事項

  • アクセラレータのキー シーケンスを入力する場合、アプリ ウィンドウはフォーカス内になければなりません。

  • アクセラレータは最上位メニューで使用できません。

  • アクセラレータはメニュー項目が次のすべての条件を満たす場合にのみ機能します。

    • サブメニュー項目が含まれていない。

    • コールバック関数を実行する。

    • Visible プロパティが 'on' に設定されている。

メニュー項目がコンテキスト メニュー内で入れ子になっている場合、アクセラレータはコンテキスト メニューにフォーカスがあるときにのみ機能します。

メニュー項目の上の区切り線。'off' または 'on' として指定します。このプロパティを 'on' に設定すると、メニュー項目の上に境界線が描画されます。

メモ

メニュー項目が最上位メニュー項目の場合、Separator プロパティは無視されます。

メニュー チェック インジケーター。'off' または 'on' として指定します。このプロパティを 'on' に設定するには、対応するメニュー項目の次にチェック マークを付けます。'off' に設定すると、チェック マークが外されます。この機能を使用すると、アプリケーションの機能を有効または無効にするメニュー項目の状態を表示できます。

メモ

メニュー項目が次の場合、Checked プロパティは無視されます。

  • 最上位メニュー項目

  • 1 つ以上の子メニュー項目をもつメニュー項目

メニュー ラベルの色。RGB 3 成分、16 進数カラー コード、または表にリストされた色オプションのいずれかとして指定します。

RGB 3 成分および 16 進数カラー コードは、カスタム色を指定するのに役立ちます。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数カラー コードは、ハッシュ記号 (#) で始まり、3 桁または 6 桁の 0 から F までの範囲の 16 進数が続く文字ベクトルまたは string スカラーです。これらの値では大文字小文字は区別されません。したがって、カラー コード '#FF8800''#ff8800''#F80'、および '#f80' は等価です。

あるいは、名前を使用して一部の一般的な色を指定できます。次の表に、名前の付いた色オプション、等価の RGB 3 成分、および 16 進数カラー コードを示します。

色名省略名RGB 3 成分16 進数カラー コード外観
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

MATLAB® の多くのタイプのプロットで使用されている既定の色の RGB 3 成分および 16 進数カラー コードを次に示します。

RGB 3 成分16 進数カラー コード外観
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

メニュー ラベル。文字ベクトルまたは string スカラーとして指定します。このプロパティはメニュー (またはメニュー項目) に表示されるラベルを指定します。

メモ

Label プロパティの使用は推奨されていません。将来のリリースで削除される可能性があります。代わりに、Text プロパティを使用してください。

相対的なメニューの位置。スカラー整数値として指定します。Position プロパティの値は、メニュー バー上の位置またはメニュー内での位置を示します。最上位レベル メニューはメニュー バー上で左から右に、Position プロパティ値に従って表示されます。ここで、1 は左端の位置です。メニュー内の個々の項目は上から下に、Position プロパティ値に従って表示されます。ここで、1 は最上部の位置です。

メモ

Position プロパティの使用は推奨されていません。将来のリリースで削除される可能性があります。メニュー項目の順序を変更するには、代わりに Children プロパティまたは関数 uistack を使用してください。

対話機能

すべて展開する

コンポーネントの可視性。'on' または 'off' として指定します。Visible プロパティが 'off' に設定されている場合、コンポーネントは UI に表示されませんが、そのプロパティに対するクエリと設定を行うことができます。

メニューの操作可能状態。'on' または 'off' として指定します。このプロパティは、ユーザーがメニュー項目を選択できるかどうかを制御します。値が 'off' のとき、メニュー ラベルはグレー表示になり、ユーザーが選択できないことを示します。

コールバック

すべて展開する

メニュー選択コールバック。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックのプロパティ値を関数ハンドル、cell 配列または文字ベクトルとして指定する方法の詳細については、コールバック プロパティ値の指定方法を参照してください。

このコールバックは、メニュー項目の位置および操作のタイプに応じて応答します。

  • メニューを左クリックすると、メニューが展開し、そのコールバックがトリガーされます。

  • いずれかのメニューが展開しているときに他の親メニュー (または最上位メニュー) にカーソルを合わせると、そのメニューが展開し、そのコールバックがトリガーされます。

メモ

メニュー項目を動的に変更するためにコールバックを使用しないでください。コールバックでメニュー項目の削除、追加、および置き換えを行うと、メニューが空白になることがあります。代わりに、Visible プロパティを使用してメニュー項目の非表示と表示を設定します。また、Enable プロパティを設定してメニュー項目の有効化や無効化を行うこともできます。メニュー項目を完全に埋めるには、これらの項目を削除して、コールバックの外部に作成してください。

コンポーネント作成関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックのプロパティ値を関数ハンドル、cell 配列または文字ベクトルとして指定する方法の詳細については、コールバック プロパティ値の指定方法を参照してください。

このプロパティは、MATLAB がコンポーネントを作成するときに実行されるコールバック関数を指定します。MATLAB は CreateFcn コールバックを実行する前に、コンポーネントのすべてのプロパティ値を初期化します。CreateFcn プロパティを指定しない場合、MATLAB は既定の作成関数を実行します。

作成中のコンポーネント オブジェクトを取得するには、CreateFcn コード内で関数 gcbo を使用します。

既存のコンポーネント オブジェクトに CreateFcn プロパティを設定しても効果はありません。

コンポーネント削除関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックのプロパティ値を関数ハンドル、cell 配列または文字ベクトルとして指定する方法の詳細については、コールバック プロパティ値の指定方法を参照してください。

DeleteFcn プロパティは、MATLAB がコンポーネントを削除するときに実行されるコールバック関数を指定します (ユーザーがウィンドウを閉じるときなど)。MATLAB はコンポーネント オブジェクトのプロパティを破棄する前に DeleteFcn コールバックを実行します。DeleteFcn プロパティを指定しない場合、MATLAB は既定の削除関数を実行します。

削除中のコンポーネント オブジェクトを取得するには、DeleteFcn コード内で関数 gcbo を使用します。

メニュー選択コールバック。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

メモ

Callback プロパティの使用は推奨されていません。将来のリリースで削除される可能性があります。代わりに MenuSelectedFcn を使用してください。

コールバック実行制御

すべて展開する

コールバックの割り込み。'on' または 'off' として指定します。Interruptible プロパティは実行中のコールバックが割り込み可能かどうかを決定します。

次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

MATLAB がコールバックを呼び出すたびに、そのコールバックは実行中のコールバック (がある場合) に割り込もうとします。実行中のコールバックを所有するオブジェクトの Interruptible プロパティが、割り込み可能かどうかを決定します。

  • 値が 'on' の場合、他のコールバックがオブジェクトのコールバックに割り込むことができます。drawnowfiguregetframewaitforpause などの、MATLAB が次にキューを処理するポイントで割り込みが発生します。

    • 実行中のコールバックにこれらいずれかのコマンドが含まれている場合、MATLAB はその場所でコールバックの実行を停止し、割り込みコールバックを実行します。割り込みコールバックが完了したときに MATLAB は実行中だったコールバックの実行を再開します。

    • 実行中のコールバックにこれらのコマンドが含まれていない場合、MATLAB はそのコールバックの実行を中断せずに終了させます。

  • 値が 'off' の場合、割り込みの試行はすべてブロックされます。割り込みコールバックを所有するオブジェクトの BusyAction プロパティが、その割り込みコールバックを破棄するかキューに入れるかを決定します。

メモ

コールバックの割り込みと実行は、以下の状況では動作が異なります。

  • 割り込みコールバックが DeleteFcnCloseRequestFcn または SizeChangedFcn コールバックの場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 実行中のコールバックが関数 waitfor を現在実行している場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • Timer オブジェクトは、Interruptible プロパティ値にかかわらず、スケジュールに従って実行されます。

  • MATLAB は、割り込みが発生したときにプロパティの状態や表示を保存しません。たとえば、gca コマンドや gcf コマンドから返されたオブジェクトは、別のコールバックを実行するときに変更されている可能性があります。

Interruptible プロパティおよび BusyAction プロパティがプログラムの動作に及ぼす影響を示す例は、コールバック実行の中断を参照してください。

コールバック キューイング。'queue' (既定値) または 'cancel' として指定します。BusyAction プロパティは MATLAB による割り込みコールバックの実行の処理方法を決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

割り込みコールバックの割り込み元の BusyAction プロパティは、MATLAB が割り込みコールバックの実行を処理する方法を決定します。BusyAction プロパティは次の値をとります。

  • 'queue' — 割り込みコールバックをキューに入れ、実行中のコールバックが終了した後に処理されるようにします。

  • 'cancel' — 割り込みコールバックを実行しません。

MATLAB がコールバックを呼び出すたびに、そのコールバックは実行中のコールバックに割り込もうとします。コールバックを実行中のオブジェクトの Interruptible プロパティが、割り込み可能かどうかを決定します。Interruptible は次のように設定します。

  • on — MATLAB が次にキューを処理するポイントで割り込みが発生します。これは既定値です。

  • off — 割り込みコールバックを所有するオブジェクトの BusyAction プロパティによって、MATLAB が割り込みコールバックをキューに追加するか無視するかを決定します。

BusyAction プロパティおよび Interruptible プロパティがプログラムの動作に及ぼす影響を示す例は、コールバック実行の中断を参照してください。

このプロパティは読み取り専用です。

削除状態。'off' または 'on' として返されます。MATLAB は、DeleteFcn コールバックが実行を開始すると、BeingDeleted プロパティを 'on' に設定します。コンポーネント オブジェクトが存在しなくなるまで BeingDeleted プロパティは 'on' に設定されたままです。

クエリや変更の前にオブジェクトが削除されようとしていないか確認するために BeingDeleted プロパティの値をチェックします。

このプロパティは、Menu オブジェクトに影響しません。

親/子

すべて展開する

このプロパティは読み取り専用です。

親オブジェクト。FigureContextMenu または Menu オブジェクトとして指定します。このプロパティを設定することで、メニュー項目を別のウィンドウまたは別のメニューに移動できます。

メニューの子。空の GraphicsPlaceholder または Menu オブジェクトの 1 次元配列として返されます。メニューの子は、サブメニューとして機能するその他のメニューです。

Children プロパティを使用して子の追加や削除を行うことはできません。このプロパティは、子のリストの表示や子メニュー項目の並べ替えに使用します。この配列内の子の順序は、表示されるメニュー項目の順序を反映します。

このリストに子を追加するには、子コンポーネントの Parent プロパティをこの Menu オブジェクトに設定します。

HandleVisibility プロパティが 'off' に設定されているオブジェクトは、Children プロパティにリストされません。

オブジェクト ハンドルの可視性。'on''callback' または 'off' として指定します。

このプロパティは、オブジェクトの親がもつ子のリストにおけるそのオブジェクト ハンドルの可視性を制御します。ハンドルがその親オブジェクトのリストで、子として可視できないとき、オブジェクトの階層を検索したり、ハンドルのプロパティをクエリしてハンドルを取得する関数は、ハンドルを返しません。このような関数には getfindobjgcagcfgconewplotclaclf および close があります。HandleVisibility プロパティはまた、親 Figure の CurrentObject プロパティでオブジェクトのハンドルの可視性も制御します。ハンドルは非表示の場合も有効なままです。オブジェクトにアクセスできる場合は、そのプロパティを設定および取得して、それをオブジェクトに作用する任意の関数に渡すことができます。

HandleVisibility の値説明
'on'オブジェクト ハンドルは常に表示されます。
'callback'オブジェクト ハンドルはコールバック内から、あるいはコールバックにより呼び出される関数から参照できます。しかし、コマンド ラインから呼び出される関数からは参照できません。このオプションを使用すると、コマンド ラインからのオブジェクトへのアクセスがブロックされますが、コールバック関数からのアクセスは許可されます。
'off'オブジェクト ハンドルは常に非表示です。このオプションは、他の関数による UI の意図しない変更を防止するために役立ちます。HandleVisibility'off' に設定すると、その関数の実行中にハンドルが一時的に非表示になります。

グラフィックス ルートの ShowHiddenHandles プロパティを 'on' に設定すると、HandleVisibility の値にかかわらず、すべてのハンドルを可視にできます。この設定は、HandleVisibility 値には影響しません。

識別子

すべて展開する

このプロパティは読み取り専用です。

グラフィックス オブジェクトのタイプ。'uimenu' として返されます。

オブジェクト識別子。文字ベクトルまたは string スカラーとして指定します。オブジェクトの識別子として機能する一意の Tag 値を指定できます。コードの他の部分からオブジェクトにアクセスする必要がある場合、関数 findobj を使用して Tag 値に基づいてオブジェクトを検索できます。

ユーザー データ。任意の配列として指定します。UserData を指定すると、アプリ内でデータを共有するのに役立ちます。詳細については、コールバック間のデータ共有を参照してください。

R2006a より前に導入