主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

プログラムによって作成されたアプリのコールバックの記述

異なるユーザー操作用のコールバック

用户界面とグラフィックスのコンポーネントのプロパティには、特定のコールバック関数に関連付けできるものがあります。これらのプロパティはそれぞれ、特定のユーザー操作に対応します。たとえば、uicontrolには、回拨と呼ばれるプロパティがあります。このプロパティの値は、コールバック関数へのハンドル、無名関数、または MATLAB®式を含む文字ベクトルとして設定できます。このプロパティを設定すると、uicontrolを操作するときにアプリが応答するようになります。回拨プロパティに値が指定されていない場合、ユーザーが uicontrolを操作しても何も起きません。

次の表に、使用可能なコールバック プロパティ、コールバック関数をトリガーするユーザー操作、それらのプロパティを使用する一般的な 用户界面コンポーネントとグラフィックス コンポーネントの一覧を示します。

コールバック プロパティ

ユーザー アクション

このプロパティを使用するコンポーネント

按钮向下

ポインターがコンポーネント上または 图形上にあるときにエンド ユーザーがマウス ボタンをクリックする。

斧头,图形,uibuttongroup,uicontrol,uipanel,合适的,

回拨

エンド ユーザーがコンポーネントをトリガーする。例: メニュー項目の選択、スライダーの移動、プッシュ ボタンの押し下げ。

uicontextmenu,uicontrol,菜单

CellEditCallback

エンド ユーザーがテーブル内にある編集可能なセルの値を編集する。

合适的

CellSelectionCallback

エンド ユーザーがテーブル内のセルを選択する。

合适的

单击回调

エンド ユーザーがマウスの左ボタンでプッシュ ツールまたはトグル ツールをクリックする。

uitoggletool,uipushtool

关闭请求FCN

图形が閉じる。

图形

创建FCN

MATLABがオブジェクトを作成し、そのオブジェクトが表示される前にコールバックが実行される。

斧头,图形,uibuttongroup,uicontextmenu,uicontrol,菜单,uipushtool,uipanel,合适的,uitoggletool,uitoolbar

删除FCN

MATLABが 图形を削除する直前にコールバックが実行される。

斧头,图形,uibuttongroup,uicontextmenu,uicontrol,菜单,uipushtool,uipanel,合适的,uitoggletool,uitoolbar

按键

ポインターがオブジェクト上にあるときにエンド ユーザーがキーボードのキーを押す。

图形,uicontrol,uipanel,uipushtool,合适的,uitoolbar

按键释放功能

ポインターがオブジェクト上にあるときにエンド ユーザーがキーボードのキーを離す。

图形,uicontrol,合适的

关闭回调

トグル ツールの陈述“关”に変わると実行される。

uitoggletool

OnCallback

トグル ツールの陈述“开”に変わると実行される。

uitoggletool

SizeChangedFcn

调整大小プロパティが“开”に設定されているボタン グループ、图形またはパネルのサイズをエンド ユーザーが変更する。

图形,uipanel,uibuttongroup

SelectionChangedFcn

エンド ユーザーが、ボタン グループ内にある別のラジオ ボタンやトグル ボタンを選択する。

uibuttongroup

窗口按钮DOWNFCN

ポインターが 图形ウィンドウ内にあるときにエンド ユーザーがマウス ボタンをクリックする。

图形

WindowButtonMotionFcn

エンド ユーザーが 图形ウィンドウ内でポインターを移動する。

图形

窗口按钮NUPFCN

エンド ユーザーがマウス ボタンを離す。

图形

WindowKeyPressFcn

ポインターが 图形上またはその子オブジェクト上にあるときにエンド ユーザーがキーを押す。

图形

WindowKeyReleaseFcn

ポインターが 图形上またはその子オブジェクト上にあるときにエンド ユーザーがキーを離す。

图形

WindowScrollWheelFcn

ポインターが 图形上にあるときにエンド ユーザーがマウス ホイールを回す。

图形

コールバック プロパティ値の指定方法

コールバック関数を 用户界面コンポーネントに関連付けるには、コンポーネントのコールバック プロパティのいずれかの値をコールバック関数を参照するよう設定します。通常、この設定はコンポーネントの定義時に行いますが、コールバック プロパティの値はコード内の任意の位置で変更できます。

次のいずれかの方法で、コールバック プロパティの値を指定します。

関数ハンドルの指定

関数ハンドルを使用すると、関数を変数として表すことができます。この関数は、アプリ コードと同じファイル内のローカル関数または入れ子関数でなければなりません。または、MATLABパス上の個別ファイル内に作成することもできます。

関数ハンドルを作成するには、関数の名前の前に@演算子を指定します。たとえば、次のuicontrolコマンドでは、回拨プロパティを関数按钮返回へのハンドルとすることを指定します。

b=uicontrol(“风格”,“按钮”,“回调”,@U回调);

次に、按钮返回の関数定義を示します。

功能按钮返回(src,事件)显示(“按下按钮”);结束
関数ハンドルは入力引数を明示的に参照しませんが、関数宣言には 2.つの入力引数が含まれることに注意してください。これらの 2.つの入力引数は、関数ハンドルとして指定するすべてのコールバックに必要です。MATLABでは、コールバックの実行時にこれらの引数が自動的に渡されます。最初の引数は、コールバックをトリガーした 用户界面コンポーネントです。2.番目の引数は、コールバック関数にイベント データを提供します。コールバック関数で使用できるイベント データがない場合、MATLABでは 2.番目の引数入力が空の配列として渡されます。次の表に、イベント データを使用するコールバックとコンポーネントを示します。

コールバックのプロパティ名 コンポーネント
WindowKeyPressFcn
WindowKeyReleaseFcn
窗台滚轮
图形
按键 图形uicontrol合适的
按键释放功能 图形uicontrol合适的
SelectionChangedFcn uibuttongroup
CellEditCallback
CellSelectionCallback
合适的

コールバックを関数ハンドルとして指定する利点は、コールバックをコンポーネントに割り当てるときに MATLABで関数の構文エラーや依存関係の不足を検査できることです。コールバック関数に問題がある場合、MATLABは即座にエラーを返します。ユーザーによるコールバックのトリガーを待つ必要はありません。この動作により、ユーザー側で問題が発生する前にコード内の問題を見つけることができます。

细胞配列の指定

関数で使用する追加の入力引数を受け取るコールバック関数を指定するには、细胞配列を使用します。细胞配列の最初の要素は関数ハンドルです。细胞配列の他の要素は、使用する追加の入力引数です。これらはコンマで区切られます。指定する関数は、関数ハンドルの指定の説明に従って、同じ 2.つの入力引数を定義しなければなりません。ただし、最初の 2.つの引数の後に関数宣言で追加の入力を定義できます。

次のuicontrolコマンドは、プッシュ ボタンを作成し、回拨プロパティを 细胞配列として指定します。この例では、関数の名前は按钮返回、追加の入力引数の値は5.です。

b=uicontrol(“风格”,“按钮”,“回调”,{@u回调,5});

次に、按钮返回の関数定義を示します。

功能按钮返回(src,事件,x)显示(x);结束

コールバックを関数ハンドルとして指定する場合と同様に、コールバックをコンポーネントに割り当てるときに、MATLABでは 细胞配列として指定されたコールバックの構文エラーや依存関係の不足をチェックします。コールバック関数に問題がある場合、MATLABは即座にエラーを返します。ユーザーによるコールバックのトリガーを待つ必要はありません。この動作により、ユーザー側で問題が発生する前にコード内の問題を見つけることができます。

無名関数の指定

関数ハンドルと 细胞配列に必要な 2.つの引数をサポートしない関数を 用户界面コンポーネントで実行する場合は、無名関数を指定します。たとえば、次のuicontrolコマンドは、プッシュ ボタンを作成し、回拨プロパティを無名関数として指定します。この例では、関数の名前を我的乐趣とし、その関数宣言は 1.つの入力引数xのみを定義します。

b=uicontrol(“风格”,“按钮”,“回调”(src,event)myfun(x);;

MATLABコマンドを含む文字ベクトルの指定 (非推奨)

いくつかの簡単なコマンドだけを実行する場合は文字ベクトルも指定できますが、コールバックに含まれるコマンド数が多くなるとコールバックの管理が難しくなることがあります。指定する文字ベクトルは、有効な MATLABの式で構成されなければなりません。これには関数の引数を含めることができます。次に例を示します。

hb=uicontrol(“风格”,“按钮”,...“字符串”,“绘图线”,...“回调”,“地块(兰德(20,3))”);
文字ベクトル“地块(兰德(20,3))”は有効なコマンドであり、ボタンをクリックすると MATLABがこの文字ベクトルを評価します。たとえば、次のように文字ベクトルに変数が含まれるとします。
‘绘图(x)’
この場合、ユーザーがコールバックをトリガーするときに変数xはベース ワークスペースに存在しなければなりません。存在しない場合は、エラーが返されます。コールバック プロパティの値を代入する時点で変数が存在している必要はありませんが、ユーザーがコールバックをトリガーするときには存在していなければなりません。

関数ハンドルや 细胞配列として指定されたコールバックとは異なり、MATLABでは文字ベクトルの構文エラーや依存関係の不足が "検査されることはありません"。MATLABの式に問題があっても、コールバックをトリガーするまで未検出のまま残ります。

関連するトピック