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

uicontextmenu

コンテキスト メニュー コンポーネントの作成

説明

cm = uicontextmenu は、現在の Figure にコンテキスト メニューを作成し、ContextMenu オブジェクトを返します。Figure が存在しない場合は、MATLAB® が関数 figure を呼び出して Figure を作成します。

Figure でコンテキスト メニューが開くようにするには、次の手順も行わなければなりません。

  • 同じ Figure 内の UI コンポーネントやグラフィックス オブジェクトにコンテキスト メニューを割り当てます。

  • コンテキスト メニュー内に少なくとも 1 つの子 Menu オブジェクトを作成します。

cm = uicontextmenu(parent) は、指定された親 Figure にコンテキスト メニューを作成します。親には、関数 uifigure または関数 figure のいずれかで作成された Figure を指定できます。

cm = uicontextmenu(___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して指定されたプロパティ値をもつコンテキスト メニューを作成します。前述の構文のいずれかを使用して、名前と値のペアを指定します。

すべて折りたたむ

UI figure に 2 つのサブメニューをもつコンテキスト メニューを作成します。ContextMenu オブジェクトに figure の ContextMenu プロパティを設定して、figure 自体にコンテキスト メニューを割り当てます。コンテキスト メニューを表示するには、Figure ウィンドウの任意の場所を右クリックします。

fig = uifigure;

cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Menu1');
m2 = uimenu(cm,'Text','Menu2');

fig.ContextMenu = cm;

ツリー コンポーネントに適したアクションのコンテキスト メニューを作成します。コンテキスト メニューをツリー内の最上位のツリー ノードに割り当てます。

UI figure で、4 つの最上位のノードと入れ子ノードのセットを含むツリーを作成します。

fig = uifigure;

tree = uitree(fig,'Position',[20 200 175 100]);

category1 = uitreenode(tree,'Text','Runners');
r1 = uitreenode(category1,'Text','Joe');
r2 = uitreenode(category1,'Text','Linda');

category2 = uitreenode(tree,'Text','Cyclists');
c1 = uitreenode(category2,'Text','Rajeev');

category3 = uitreenode(tree,'Text','Hikers');
h1 = uitreenode(category3,'Text','Jack');

category4 = uitreenode(tree,'Text','Swimmers');
s1 = uitreenode(category4,'Text','Logan');

3 つのメニュー項目を含むコンテキスト メニューを作成します。最後のメニュー項目には、4 つのサブメニューを作成します。

cm = uicontextmenu(fig);
m1 = uimenu(cm,'Text','Expand All');
m2 = uimenu(cm,'Text','Collapse All');
m3 = uimenu(cm,'Text','Scroll To...');

sbm1 = uimenu(m3,'Text','Runners');
sbm2 = uimenu(m3,'Text','Cyclists');
sbm3 = uimenu(m3,'Text','Hikers');
sbm4 = uimenu(m3,'Text','Swimmers');

次に、各ノードの ContextMenu プロパティを ContextMenu オブジェクトに設定し、コンテキスト メニューを最上位のツリー ノードに割り当てます。

category1.ContextMenu = cm;
category2.ContextMenu = cm;
category3.ContextMenu = cm;
category4.ContextMenu = cm;

任意の最上位のツリー ノードを右クリックし、コンテキスト メニューを表示します。

この時点で、コードはまだ終了していません。右クリックするとコンテキスト メニューが表示されますが、メニュー項目を選択しても何も効果はありません。メニュー項目の動作の実装を完了するには、コールバック関数 MenuSelectedFcn を作成します。

コンテキスト メニューを開くたびに、コマンド ウィンドウにメッセージが表示されるコンテキスト メニューを作成します。

従来の Figure を使用し、ライン プロットを作成します。その後、メニュー項目を 1 つ持つコンテキスト メニューを作成し、そのライン プロットに割り当てます。コンテキスト メニューが開くたびにコマンド ウィンドウに出力を表示するコールバック関数 ContextMenuOpeningFcn を作成します。

f = figure;
p = plot(1:10);

cm = uicontextmenu(f);
m = uimenu(cm,'Text','Menu1');
cm.ContextMenuOpeningFcn = @(src,event)disp('Context menu opened');

p.ContextMenu = cm;

コンテキスト メニューを表示するには、プロット ラインを右クリックします。コンテキスト メニューが開くと、コマンド ウィンドウにも Context menu opened というメッセージが表示されます。

The context menu with a menu item called "Menu1" displays on the plot line.

入力引数

すべて折りたたむ

親 Figure。関数 uifigure または関数 figure で作成された Figure オブジェクトとして指定します。親 Figure を指定しない場合は、MATLAB で関数 figure が呼び出されて親となる Figure が作成されます。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: 'ContextMenuOpeningFcn',@myfunction は、ユーザーがコンテキスト メニューを操作するときに実行される関数として myfunction を指定します。

ここでは、プロパティの一部だけを紹介しています。完全な一覧については、ContextMenu のプロパティ を参照してください。

コンテキスト メニューを開くコールバック関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

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

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

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

コンテキスト メニューの子。空の 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;
Context menu with three menu items.

cm.Children は、メニュー項目のリストを逆順で返します。

cm.Children
ans = 

  3×1 Menu array:

  Menu    (Menu3)
  Menu    (Menu2)
  Menu    (Menu1)

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

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

ヒント

  • 実行中のアプリでコンテキスト メニューを対話的に表示するには、次を満たさなければなりません。

    • 少なくとも 1 つのメニュー項目をもつ。

    • 同じ Figure の UI コンポーネントまたはグラフィックス オブジェクトに割り当てられている。

  • コンテキスト メニューをプログラムによって開くには、関数 open を使用します。コンテキスト メニューは、関数 uifigure を使用して作成された Figure の子でなければなりません。コンテキスト メニューを表示するには、関数 uimenu を使用して作成された、少なくとも 1 つのメニュー項目をもつ必要があります。

参考

関数

プロパティ

R2006a より前に導入