このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
用户界面とグラフィックスのコンポーネントのプロパティには、特定のコールバック関数に関連付けできるものがあります。これらのプロパティはそれぞれ、特定のユーザー操作に対応します。たとえば、uicontrolには、回拨
と呼ばれるプロパティがあります。このプロパティの値は、コールバック関数へのハンドル、無名関数、または MATLAB®式を含む文字ベクトルとして設定できます。このプロパティを設定すると、uicontrolを操作するときにアプリが応答するようになります。回拨
プロパティに値が指定されていない場合、ユーザーが uicontrolを操作しても何も起きません。
次の表に、使用可能なコールバック プロパティ、コールバック関数をトリガーするユーザー操作、それらのプロパティを使用する一般的な 用户界面コンポーネントとグラフィックス コンポーネントの一覧を示します。
コールバック プロパティ |
ユーザー アクション |
このプロパティを使用するコンポーネント |
---|---|---|
按钮向下 |
ポインターがコンポーネント上または 图形上にあるときにエンド ユーザーがマウス ボタンをクリックする。 |
|
回拨 |
エンド ユーザーがコンポーネントをトリガーする。例: メニュー項目の選択、スライダーの移動、プッシュ ボタンの押し下げ。 |
|
CellEditCallback |
エンド ユーザーがテーブル内にある編集可能なセルの値を編集する。 |
|
CellSelectionCallback |
エンド ユーザーがテーブル内のセルを選択する。 |
|
单击回调 |
エンド ユーザーがマウスの左ボタンでプッシュ ツールまたはトグル ツールをクリックする。 |
|
关闭请求FCN |
图形が閉じる。 |
|
创建FCN |
MATLABがオブジェクトを作成し、そのオブジェクトが表示される前にコールバックが実行される。 |
|
删除FCN |
MATLABが 图形を削除する直前にコールバックが実行される。 |
|
按键 |
ポインターがオブジェクト上にあるときにエンド ユーザーがキーボードのキーを押す。 |
|
|
ポインターがオブジェクト上にあるときにエンド ユーザーがキーボードのキーを離す。 |
|
关闭回调 |
トグル ツールの |
|
OnCallback |
トグル ツールの |
|
|
|
|
SelectionChangedFcn |
エンド ユーザーが、ボタン グループ内にある別のラジオ ボタンやトグル ボタンを選択する。 |
|
窗口按钮DOWNFCN |
ポインターが 图形ウィンドウ内にあるときにエンド ユーザーがマウス ボタンをクリックする。 |
|
WindowButtonMotionFcn |
エンド ユーザーが 图形ウィンドウ内でポインターを移動する。 |
|
窗口按钮NUPFCN |
エンド ユーザーがマウス ボタンを離す。 |
|
WindowKeyPressFcn |
ポインターが 图形上またはその子オブジェクト上にあるときにエンド ユーザーがキーを押す。 |
|
WindowKeyReleaseFcn |
ポインターが 图形上またはその子オブジェクト上にあるときにエンド ユーザーがキーを離す。 |
|
|
ポインターが 图形上にあるときにエンド ユーザーがマウス ホイールを回す。 |
コールバック関数を 用户界面コンポーネントに関連付けるには、コンポーネントのコールバック プロパティのいずれかの値をコールバック関数を参照するよう設定します。通常、この設定はコンポーネントの定義時に行いますが、コールバック プロパティの値はコード内の任意の位置で変更できます。
次のいずれかの方法で、コールバック プロパティの値を指定します。
细胞配列の指定。この 细胞配列には、第 1.要素として関数ハンドルまたは関数名を指定し、その後にその関数で使用する必要のある入力引数を指定します。
関数ハンドルを使用すると、関数を変数として表すことができます。この関数は、アプリ コードと同じファイル内のローカル関数または入れ子関数でなければなりません。または、MATLABパス上の個別ファイル内に作成することもできます。
関数ハンドルを作成するには、関数の名前の前に@
演算子を指定します。たとえば、次のuicontrol
コマンドでは、回拨
プロパティを関数按钮返回
へのハンドルとすることを指定します。
b=uicontrol(“风格”,“按钮”,“回调”,@U回调);
次に、按钮返回
の関数定義を示します。
功能按钮返回(src,事件)显示(“按下按钮”);结束
コールバックのプロパティ名 | コンポーネント |
---|---|
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の式で構成されなければなりません。これには関数の引数を含めることができます。次に例を示します。
hb=uicontrol(“风格”,“按钮”,...“字符串”,“绘图线”,...“回调”,“地块(兰德(20,3))”);
“地块(兰德(20,3))”
は有効なコマンドであり、ボタンをクリックすると MATLABがこの文字ベクトルを評価します。たとえば、次のように文字ベクトルに変数が含まれるとします。‘绘图(x)’
x
はベース ワークスペースに存在しなければなりません。存在しない場合は、エラーが返されます。コールバック プロパティの値を代入する時点で変数が存在している必要はありませんが、ユーザーがコールバックをトリガーするときには存在していなければなりません。
関数ハンドルや 细胞配列として指定されたコールバックとは異なり、MATLABでは文字ベクトルの構文エラーや依存関係の不足が "検査されることはありません"。MATLABの式に問題があっても、コールバックをトリガーするまで未検出のまま残ります。